আইওএস 13 এ উপস্থাপিত ভিউ কন্ট্রোলারের ইন্টারেক্টিভ বরখাস্তকে অক্ষম করুন


135

আইওএস 13 মডেল উপস্থাপন করা ভিউ কন্ট্রোলারের জন্য একটি নতুন ডিজাইন modalPresentationStyle .pageSheet(এবং এটির .formSheetভাইবাল) উপস্থাপন করেছে ...

আইওএস 13 এ নতুন স্লাইডিং মডেল উপস্থাপনা

… এবং আমরা উপস্থাপিত ভিউ কন্ট্রোলারটিকে নীচে (ইন্টারেক্টিভ বরখাস্ত) স্লাইড করে এই শীটগুলি বরখাস্ত করতে পারি । যদিও নতুন "পুল-টু-বরখাস্ত" বৈশিষ্ট্যটি বেশ কার্যকর, তবে এটি সর্বদা কাম্য নয়।

প্রশ্ন: আমরা কীভাবে ইন্টারেক্টিভ বরখাস্ত বন্ধ করতে পারি? - মনে রাখবেন আমরা উপস্থাপনা শৈলী একই রাখি।



6
@ মেহুলথাক্কার এটি একটি আলাদা প্রশ্ন।
জাকুব ট্রুহলি

উত্তর:


240

বিকল্প 1:

viewController.isModalInPresentation = true

অক্ষম ইন্টারেক্টিভ বরখাস্ত

(অক্ষম ইন্টারেক্টিভ .pageSheetবরখাস্ত এর মতো কাজ করে।)

  • যেহেতু আইওএস 13, এর UIViewControllerমধ্যে একটি নতুন সম্পত্তি রয়েছে isModalInPresentationযা trueইন্টারেক্টিভ বরখাস্ত রোধের জন্য সেট করা আবশ্যক contains
  • এটি মূলত ভিউ কন্ট্রোলারের সীমার বাইরে ইভেন্টগুলিকে উপেক্ষা করে। মনে রাখবেন যে আপনি যদি কেবল অটোমেটিক স্টাইলই না ব্যবহার করেন তবে উপস্থাপনা স্টাইল .popoverইত্যাদি ব্যবহার করেন using
  • এই সম্পত্তিটি falseডিফল্টরূপে।

থেকে সরকারী দস্তাবেজ : যদি true, UIKit দৃশ্য নিয়ামক নির্ধারিত সীমা আটকায় এবং বাহিরে ঘটনা উপেক্ষা করে দৃশ্য নিয়ামক ইন্টারেক্টিভ বরখাস্ত যখন এটি পর্দায় আসেন হয়।


বিকল্প 2:

func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
    return false
}
  • যেহেতু আইওএস 13, এর UIAdaptivePresentationControllerDelegateমধ্যে একটি নতুন পদ্ধতি রয়েছে presentationControllerShouldDismiss
  • এই পদ্ধতিটি কেবল তখনই বলা হয় যদি উপস্থাপিত ভিউ কন্ট্রোলার প্রোগ্রামটিভভাবে খারিজ না হয় এবং এর isModalInPresentationসম্পত্তি সেট করা থাকে false

পরামর্শ: উপস্থাপনা কন্ট্রোলারের প্রতিনিধি নির্ধারণ করতে ভুলবেন না।


2
যদি উপস্থাপিত ভিউ কন্ট্রোলারটি একটি নেভিগেশন নিয়ন্ত্রক হয়, আপনি হয় isModalInPresentationন্যাভিগেশন নিয়ন্ত্রক বা নেভিগেশন স্ট্যাকের মধ্যে প্রদর্শিত পৃথক দর্শনীয় নিয়ন্ত্রকদের সেট করতে পারেন । পরেরটি আপনাকে ইন্টারেক্টিভ বরখাস্ত সম্ভব কিনা তা পর্দা বাই স্ক্রিন ভিত্তিতে চয়ন করতে দেয়। অনুসন্ধান নিয়ন্ত্রকদের সাথে সাবধান, তারা পৃথক দর্শন নিয়ামক (তবে নেভিগেশন নিয়ামক নয়) এর চেয়ে বেশি প্রাধান্য পায়। আমার ব্লগ পোস্টে আরও তথ্য: माध्यम.com
জেফ হ্যাকওয়ার্থ

1
মনে রাখবেন যে আপনার ভিসি যদি পপওভার হিসাবে উপস্থাপন করা হয়, এটি পপওভারটিকে বাইরে ট্যাপ করার সময় বরখাস্ত হতে বাধা দেবে
প্যাট্রিকডটস্টার

4
উদ্দেশ্য-সি:viewController.modalInPresentation = YES;
কোয়ারাক

3
একটিতে এই পতাকাটি সেট করার সময় কেউ কি এটি কাজ করতে পেয়েছে UIImagePickerController? আমাদের কাছে দেখে মনে হচ্ছে এটি এড়িয়ে চলেছে UIImagePickerControllerএবং তাই সোয়াইপ ইশারা দিয়ে এটি খারিজ করা যেতে পারে। হতে পারে এটি কোনও আইওএস 13 বাগ।
প্যাট্রিকডটস্টার

4
যখন presentationControllerShouldDismiss(_ presentationController: UIPresentationController)আয় মিথ্যা, presentationControllerDidAttemptToDismiss(_ presentationController: UIPresentationController)তাই আপনি কি করতে পারেন বলা হয় জিনিষ ব্যবহারকারী ডেটা প্রবেশ করেছে যদি একটি নিশ্চিতকরণ সংলাপ যোগ পছন্দ করি।
নিল

66
  1. আপনি যদি পূর্বের আইওএস সংস্করণে (<আইওএস 13) পুরো স্ক্রিনে মডেল উপস্থাপনার মতো আচরণ করতে চান তবে আপনার গন্তব্য দেখার নিয়ন্ত্রকের উপস্থাপনা শৈলীতে সেট করুন UIModalPresentationStyle.fullScreen

    let someViewController = \*VIEW CONTROLLER*\
    someViewController.modalPresentationStyle = .fullScreen

    এবং আপনি যদি স্টোরিবোর্ড ব্যবহার করছেন তবে কেবল সেগুয়াটি নির্বাচন করুন Full Screenএবং Presentationড্রপডাউনটি নির্বাচন করুন ।

    এখানে চিত্র বর্ণনা লিখুন

  2. আপনি যদি কেবল ইন্টারেক্টিভ বরখাস্তকে অক্ষম করতে চান এবং নতুন উপস্থাপনা শৈলীতে সেট করে UIViewControllerসম্পত্তি রাখতে isModalInPresentationপারেন true

    if #available(iOS 13.0, *) {
        someViewController.isModalInPresentation = true // available in IOS13
    }

এটি {controller.isModalInPstreamation = true using ব্যবহার করার চেয়ে আরও ভাল কাজ করে}
ম্যাক্সিমাম ফির্সফ

8

সম্পত্তি isModalInPresentationসাহায্য করতে পারে।

ডকুমেন্টেশন থেকে:

আপনি যখন এটি সেট করেন true, ইউআইকিট ভিউ কন্ট্রোলারের সীমানার বাইরে ইভেন্টগুলি উপেক্ষা করে এবং অনস্ক্রিন অবস্থায় ভিউ কন্ট্রোলারের ইন্টারেক্টিভ বরখাস্তকে বাধা দেয়।

আপনি এটি এর মতো ব্যবহার করতে পারেন:

let controller = MyViewController()
controller.isModalInPresentation = true
self.present(controller, animated: true, completion: nil)

5

আপনি যদি নিজের ইউআই লেআউট করার জন্য স্টোরিবোর্ডগুলি ব্যবহার করছেন তবে কোনও নেভিগেশন কন্ট্রোলার ব্যবহার করার সময় আমি এই ইন্টারঅ্যাকটিভ বরখাস্তকে অক্ষম করার সর্বোত্তম উপায়টি খুঁজে পেয়েছি হ'ল স্বয়ংক্রিয় থেকে পূর্ণ স্ক্রিনে অ্যাট্রিবিউট ইন্সপেক্টরের নেভিগেশন কন্ট্রোলারের উপস্থাপনা পরিবর্তন করা। আপনার নেভিগেশন স্ট্যাকের সমস্ত দর্শনীয় কন্ট্রোলারগুলি তখন সম্পূর্ণ স্ক্রিন হবে এবং ব্যবহারকারীর দ্বারা বরখাস্ত করতে সক্ষম হবে না।

নেভিগেশন নিয়ামকের জন্য উপস্থাপনা বিকল্প দেখাচ্ছে অ্যাট্রিবিউট ইন্সপেক্টর


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.