আইওএস 7-এ ইউআইএনএভিগেশন কন্ট্রোলারটিতে ফিরে সোয়াইপ অঙ্গভঙ্গিটি কীভাবে অক্ষম করবেন


326

আইওএস 7-এ অ্যাপল একটি নতুন ডিফল্ট নেভিগেশন আচরণ যুক্ত করেছে। নেভিগেশন স্ট্যাক ফিরে যেতে আপনি পর্দার বাম প্রান্ত থেকে সোয়াইপ করতে পারেন। তবে আমার অ্যাপ্লিকেশনটিতে, এই আচরণটি আমার কাস্টম বাম মেনুটির সাথে সাংঘর্ষিক। সুতরাং, ইউআইএনএভিগেশন কন্ট্রোলারের এই নতুন অঙ্গভঙ্গিটি অক্ষম করা কি সম্ভব?



2
আমি আরও জানতে পেরেছি যে আপনি যদি সেট করেন তবে navigationItem.hidesBackButton = trueএই অঙ্গভঙ্গিটিও অক্ষম হয়ে যায়। আমার ক্ষেত্রে আমি একটি কাস্টম ব্যাক বোতাম প্রয়োগ করেছি এবং এটি হিসাবে যুক্ত করবleftBarButtonItem
উমাইর

উত্তর:


586

আমি একটি সমাধান পেয়েছি:

উদ্দেশ্য গ:

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

সুইফট 3+:
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false


29
অবশ্যই আপনি যদি iOS এর পুরানো সংস্করণ সমর্থন করছেন তবে আপনাকে নতুন পদ্ধতির প্রাপ্যতা পরীক্ষা করতে হবে।
আর্টফিল

2
দেখার দর্শনটির জন্য এটি নিষ্ক্রিয় করার কোনও উপায় আছে কি?
মার্ক

11
আপনি / এ enable / disableসনাক্তকারী করতে পারেন । অথবা, আপনি আপনার আরও জটিল যুক্তি দিয়ে প্রোটোকল প্রয়োগ করতে পারেন এবং এটিকে সম্পত্তি হিসাবে সেট করতে পারেন । viewDidAppear:viewDidDisappearUIGestureRecognizerDelegaterecognizer.delegate
আর্টফিল

26
IOS8 তারিখে, সেটিং self.navigationController.interactivePopGestureRecognizer.enabledসম্পত্তি দৃশ্য এর পদ্ধতি নিম্নলিখিত কাজ করে না: viewDidLoad, viewWillAppear, viewDidAppear, viewDidDisappear, কিন্তু পদ্ধতিতে কাজ viewWillDisappear। IOS7 এ এটি উল্লিখিত সমস্ত পদ্ধতিতে কাজ করে। সুতরাং ভিউ কনট্রোলারটিতে কাজ করার সময় এটি অন্য যে কোনও পদ্ধতিতে ব্যবহার করার চেষ্টা করুন, আমি দৃশ্যের সাথে নিশ্চিত করি যে আমি আইওএস 8 এ আমার জন্য কাজ করে যখন আমি ভিউর অভ্যন্তরের কিছু বোতামে ক্লিক করি।
সিহাদ বেগোভিচ

8
নিশ্চিত করতে পারেন যে এটি আইওএস 8-এ ভিউডিলড ও ভিউইল অ্যাপ্লায় কাজ করবে না, এটিকে ভিউউইলআউটআউবউবভিউগুলিতে রেখেছিল কৌতুকটি করেছে
টনিস্টাস্টিক

47

আমি অঙ্গভঙ্গিটি অক্ষম করার জন্য নির্ধারণ করেছি কেবল সর্বদা কার্যকর হয় না। এটি কাজ করে, তবে আমার জন্য এটি কেবল একবার ব্যাকস্টেকচার ব্যবহার করার পরে করেছিল did দ্বিতীয়বার এটি ব্যাকস্টেকচারটি ট্রিগার করবে না।

আমার পক্ষে ঠিক করা ছিল যে অঙ্গভঙ্গিটি পেশ করা উচিত এবং কোনও ফেরত দেওয়ার জন্য গতিরোধক পদ্ধতিটি প্রয়োগ করা উচিত:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    // Disable iOS 7 back gesture
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
        self.navigationController.interactivePopGestureRecognizer.delegate = self;
    }
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    // Enable iOS 7 back gesture
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
        self.navigationController.interactivePopGestureRecognizer.delegate = nil;
    }
}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    return NO;
}

1
ধন্যবাদ! ব্যাক সোয়াইপগুলি পুরোপুরি অক্ষম করার জন্য এটি প্রয়োজন। এটি আইওএস 8 এ এখনও বিদ্যমান এবং এটি অ্যাপল বাগের মতো গন্ধযুক্ত।
এরিক চেন

আপনাকে ধন্যবাদ, মনে হয় এটি কেবল কাজ করেছে।
বেন

আমি জানি না তবে কেন আমার অ্যাপে কোনও ভিউ কন্ট্রোলার কোনও অজানা কারণে এই পিছনের অঙ্গভঙ্গিতে ক্র্যাশ করছিল .. এটি আমাকে খুঁজে পেতে বাঁচিয়েছিল কারণ আমার এই পিছনের অঙ্গভঙ্গির প্রয়োজন ছিল না এবং তাই আমি এই কোডটি ব্যবহার করে অক্ষম করেছিলাম .. +1
আহসান ইব্রাহিম

1
@ আহসানএব্রাহিম, যখন পেছনের অঙ্গভঙ্গি শুরু হয়, viewWillAppearবর্তমান দর্শনের পিছনের দৃশ্যে ডাকা হয়। এটি বর্তমান যুক্তিটি সক্রিয় থাকাকালীন কোড লজিককে ধ্বংস করতে পারে। আপনার ক্রাশের কারণ হতে পারে।
ফটম্যান

করছেন enabledহ্যা / না লাইন প্রয়োজন? আপনি NOথেকে ফিরে gestureRecognizerShouldBegin, যথেষ্ট না?
টুলমেকারস্টেভ

30

নেভিগেশনকন্ট্রোলার থেকে কেবল অঙ্গভঙ্গি সনাক্তকারীকে সরান। আইওএস 8 এ কাজ করুন।

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
    [self.navigationController.view removeGestureRecognizer:self.navigationController.interactivePopGestureRecognizer];

একমাত্র সমাধান যা আসলে আইওএস 8 এবং 9 এ কাজ করে
কেপ্পে

7
আইওএস 10 এও কাজ করে, এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। যাইহোক, আপনি যদি এটি পুনরায় সক্ষম করতে চান তবে [self.navigationController.view addGestureRecognizer:self.navigationController.interactivePopGestureRecognizer]কোথাও করুন।
ooops

22

আইওএস 8 এর হিসাবে গৃহীত উত্তরটি আর কাজ করে না। আমার মূল গেমের স্ক্রিনে অঙ্গভঙ্গিটি খারিজ করার জন্য আমাকে সোয়েপিং বন্ধ করা দরকার যাতে এটি প্রয়োগ করা হয়েছে:

- (void)viewDidAppear:(BOOL)animated
{
     [super viewDidAppear:animated];

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.delegate = self;
    }
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.delegate = nil;
    }

}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
     return NO;
}

2
এটি iOS8 এর সাথে কাজ করার সময় আমি * .delegate = স্বরে লাইনটিতে একটি সতর্কতা পেয়েছি; বিবরণী: বেমানান টাইপ 'ভিউকন্ট্রোলার * কনস্ট __স্ট্রং' থেকে <UigestureRecognizerDelegate> 'আইডিতে নিয়োগ
ডেভিড ডগলাস

2
IOS8 হিসাবে, গৃহীত উত্তর এখনও প্রত্যাশার মতো কাজ করে। আপনি সম্ভবত অন্য কোনও ভুল করছেন ..
আলেকজান্ডার জি

ভিউল্লাউটসউবউভিউতে স্বীকৃত উত্তরটি কল করে এটি অর্ধ কাজ করার জন্য পরিচালিত। যাইহোক, স্যুইপিংয়ের ফলে পৃষ্ঠাটি আবার 'ভিউডিডলড' বলে ডেকে আনে তাই উপরে আমার উত্তরটিতে ফিরে আসে
চার্লি সেলিগম্যান

@ ডেভিডডগলাস: সম্ভবত আপনি এই কোডটি দিয়ে সতর্কতাটি দূর করতে পারতেন: __চিকিত্সা __typeof (স্ব) দ্য সেফসেল্ফ = স্ব? তারপরে প্রতিনিধিটিকে সেফসেল্ফে সেট করুন।
লাইফজয় করুন

1
@ ডেভিডডগলাস: সেই সতর্কতা থেকে মুক্তি পেতে আপনাকে ইন্টারফেসে <UigestureRecognizerDelegate> যুক্ত করতে হবে
প্রাইমহলো

20

আমি তোয়ানের উত্তরটি কিছুটা পরিশ্রুত করেছি, কারণ:

  1. আপনার ভিউ কন্ট্রোলারটি অন্য অঙ্গভঙ্গি সনাক্তকারীদের প্রতিনিধি হিসাবে সেট হতে পারে
  2. nilআপনি যখন রুট ভিউ কন্ট্রোলারে ফিরে যান এবং অন্য কোথাও নেভিগেট করার আগে একটি সোয়াইপ অঙ্গভঙ্গি তৈরি করেন তখন ডেলিগেটকে ঝুলন্ত সমস্যার দিকে নিয়ে যায়।

নিম্নলিখিত উদাহরণটি আইওএস 7 ধরে নিয়েছে:

{
    id savedGestureRecognizerDelegate;
}

- (void)viewWillAppear:(BOOL)animated
{
    savedGestureRecognizerDelegate = self.navigationController.interactivePopGestureRecognizer.delegate;
    self.navigationController.interactivePopGestureRecognizer.delegate = self;
}

- (void)viewWillDisappear:(BOOL)animated
{
    self.navigationController.interactivePopGestureRecognizer.delegate = savedGestureRecognizerDelegate;
}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if (gestureRecognizer == self.navigationController.interactivePopGestureRecognizer) {
        return NO;
    }
    // add whatever logic you would otherwise have
    return YES;
}

+1 "প্রতিনিধিটিকে শূন্য করার উদ্দেশ্যে সেট করা ঝুলন্ত সমস্যার দিকে পরিচালিত করে যখন আপনি আবার রট ভিউ নিয়ন্ত্রকের কাছে ফিরে যান এবং অন্য কোথাও নেভিগেট করার আগে একটি সোয়াইপ অঙ্গভঙ্গি করেন" "
আলবার্টমেগ

10

দয়া করে এটি রুট ভিসিতে সেট করুন:

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:YES];
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;

}

-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:YES];
    self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}

9

সুইফ্টের জন্য:

navigationController!.interactivePopGestureRecognizer!.enabled = false

12
এটি কাজ করে, যদিও আমি জোর করে মোড়ানো না হয়ে optionচ্ছিক চেইন ব্যবহার করার পরামর্শ দিই। ? উদাঃ self.navigationController .interactivePopGestureRecognizer .isEnabled = মিথ্যা
Womble

5

এটি আইওএস 10 এবং তারপরে আমার জন্য কাজ করে:

- (void)viewWillAppear:(BOOL)animated {
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }

}

এটি ভিউডিডলড () পদ্ধতিতে কাজ করে না।


5

সম্পাদনা

আপনি যদি নির্দিষ্ট নেভিগেশন নিয়ন্ত্রকদের জন্য সোয়াইপ ব্যাক বৈশিষ্ট্য পরিচালনা করতে চান তবে সোয়াইপব্যাকটি ব্যবহারের বিষয়টি বিবেচনা করুন

এটি দিয়ে, আপনি সেট করতে পারেন navigationController.swipeBackEnabled = NO

উদাহরণ স্বরূপ:

#import <SwipeBack/SwipeBack.h>

- (void)viewWillAppear:(BOOL)animated
{
    navigationController.swipeBackEnabled = NO;
}

এটি কোকোপডসের মাধ্যমে ইনস্টল করা যেতে পারে ।

pod 'SwipeBack', '~> 1.0'

আমি ব্যাখ্যার অভাবে আবেদন করছি olog


6
আপনার সাথে জড়িত কোনও প্রকল্পের প্রচার করার সময় অবশ্যই এটির সাথে আপনার অনুমোদিততা প্রকাশ করতে হবে।

2
তদুপরি, আপনার প্রকল্পের একমাত্র উদ্দেশ্য হ'ল সোয়াইপ অঙ্গভঙ্গিটি ম্যানুয়ালি সক্ষম করা যখন ডিফল্ট সিস্টেমটি কাজ না করে, অন্যদিকে প্রশ্নটি কীভাবে সেই সিস্টেমের প্রশস্ত অঙ্গভঙ্গিটি নিষ্ক্রিয় করতে হয়, তাই আপনি সেট করেও self.navigationController.swipeBackEnabled = NOআমি নিশ্চিত যে এটি কেবলমাত্র আপনার অক্ষম করবে লাইব্রেরির সোয়াইপ ব্যাক অঙ্গভঙ্গি তবে সিস্টেমটির একটি এখনও সক্ষম হবে।

1
আমার সংক্ষিপ্ত উত্তরের জন্য দুঃখিত, আমি অতিরিক্ত তথ্য দিয়ে আমার উত্তরটি সম্পাদনা করেছি: "নির্দিষ্ট নেভিগেশন নিয়ন্ত্রণকারীদের জন্য দরকারী"। ধন্যবাদ!
devxoul

এটি সুইজল ব্যবহার করে বলে মনে হচ্ছে যা আর অনুমোদিত নয়। iOS8?
ম্যাট

1
@ ডিভেক্সল আমি দুঃখিত! আমি ভেবেছিলাম কিছুক্ষণ আগে আমি এমন কিছু পড়েছি যা বলেছিল যে সুইজিংয়ের আর অনুমতি নেই। যাইহোক, আমি এই বলে যে কিছুই খুঁজে পাচ্ছি না। অনুমান আমি ভুল করছি।
ম্যাট

4

আমার পদ্ধতি। তাদের সমস্তকে শাসন করার জন্য একটি অঙ্গভঙ্গি সনাক্তকারী:

class DisabledGestureViewController: UIViewController: UIGestureRecognizerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController!.interactivePopGestureRecognizer!.delegate = self
    }

    func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
        // Prevent going back to the previous view
        return !(navigationController!.topViewController is DisabledGestureViewController)
    }
}

গুরুত্বপূর্ণ: নেভিগেশন স্ট্যাকের যে কোনও জায়গায় প্রতিনিধিটিকে পুনরায় সেট করবেন না: navigationController!.interactivePopGestureRecognizer!.delegate = nil


3

এটি সুইফট 3 এ চলেছে

আমার জন্য কাজ কর

    self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false

3

এই সমস্ত সমাধান অ্যাপল এর অঙ্গভঙ্গি সনাক্তকারীকে এমনভাবে চালিত করে যাতে তারা প্রস্তাব দেয় না। আমাকে মাত্র একটি বন্ধু জানিয়েছে যে এর থেকে আরও ভাল সমাধান আছে:

[navigationController.interactivePopGestureRecognizer requireGestureRecognizerToFail: myPanGestureRecognizer];

যেখানে myPanGestureRecognizer হল সেই অঙ্গভঙ্গি শনাক্তকারী যা আপনি উদাহরণস্বরূপ মেনুটি দেখান। এইভাবে, আপনি যখন কোনও নতুন নেভিগেশন কন্ট্রোলারকে চাপ দেবেন তখন অ্যাপলের অঙ্গভঙ্গি সনাক্তকারী তাদের দ্বারা আর ফিরে আসবে না এবং আপনার ফোনটি ঘুমিয়ে রাখা বা ভারী বোঝার নিচে রাখলে হ্যাকি বিলম্বের উপর নির্ভর করার দরকার নেই।

এটি এখানে রেখেছি কারণ আমি জানি যে পরের বার যখন আমার প্রয়োজন হবে এটি আমি মনে করব না এবং তারপরে আমি এখানে সমস্যার সমাধান করব।


3

সুইফট 5, সুইফট 4.2 নীচের কোডটি ব্যবহার করতে পারে।

// disable
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
// enable
self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true

2

প্রদত্ত উত্তরের কোনওটিই আমাকে সমস্যাটি সমাধান করতে সহায়তা করে নি। আমার উত্তর এখানে পোস্ট করা; কারও জন্য সহায়ক হতে পারে

private var popGesture: UIGestureRecognizer?আপনার ভিউকন্ট্রোলারে বৈশ্বিক পরিবর্তনশীল হিসাবে ঘোষণা করুন । তারপরে কোডটি ভিডিডিয়ায়ার এবং ভিউউইলডিস্পায়ার পদ্ধতিতে প্রয়োগ করুন

override func viewDidAppear(animated: Bool) {

    super.viewDidAppear(animated)

    if self.navigationController!.respondsToSelector(Selector("interactivePopGestureRecognizer")) {

        self.popGesture = navigationController!.interactivePopGestureRecognizer
        self.navigationController!.view.removeGestureRecognizer(navigationController!.interactivePopGestureRecognizer!)
    }
}


override func viewWillDisappear(animated: Bool) {

    super.viewWillDisappear(animated)

    if self.popGesture != nil {
        navigationController!.view.addGestureRecognizer(self.popGesture!)
    }
}

এটি iOS v8.x এর পরে আবার সোয়াইপ অক্ষম করবে will


আমি কী পরিস্থিতিতে এটি কাজ করবে তা কল্পনা করার চেষ্টা করছি, তবে জ্যাক তা করবে না। আপনি বলছেন যে আপনি অন্যান্য সমস্ত উত্তর চেষ্টা করেছেন: আপনি যখন জ্যাকের চেষ্টা করেছিলেন তখন কী ভুল হয়েছিল?
টুলমেকারস্টেভ

অন্যদিকে, এটি জ্যাকের চেয়ে সহজ বলে মনে হচ্ছে, তাই এটি গুরুত্বপূর্ণ নয়। সিদ্ধান্ত নিয়েছি আমি এটি পছন্দ করি, কারণ আমার শ্রেণিকে একটি প্রতিনিধি হিসাবে ঘোষণা করতে হবে না, বা কারচুপিও করতে হবে না interactivePopGestureRecognizer.delegate
টুলমেকারস্টেভ

বিটিডাব্লু, কোড সরল করা যায়। সরান if( .. respondsToSelector ..। পরের লাইনটি কোনও সনাক্তকারীকে বা শূন্য করতে পপ गेস্টারে সেট করে। তারপর এর মান ব্যবহার করুন: if (self.popGesture != nil) self.navigationController .. removeGestureRecognizer( self.popGesture )
টুলমেকারস্টেভ

2

এটি viewDidLoad:আইওএস 8 এর জন্য কাজ করে :

  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
      self.navigationController.interactivePopGestureRecognizer.enabled = false;
  });

বেশিরভাগ সমস্যার সমাধান ভাল অল'এর সাহায্যে সমাধান করা যেতে পারে ' dispatch_after

যদিও দয়া করে নোট করুন যে এই সমাধানটি সম্ভাব্যভাবে অনিরাপদ, তবে আপনার নিজের যুক্তিটি ব্যবহার করুন।

হালনাগাদ

আইওএসের জন্য 8.1 বিলম্বের সময়টি 0.5 সেকেন্ড হওয়া উচিত

আইওএস 9.3 এ আর কোনও বিলম্বের প্রয়োজন নেই, এটি আপনার এটি রেখে কেবল এটির কাজ করে viewDidLoad:
(আইওএস 9.0-9.3 এ কাজ করে তবে টিবিডি)

navigationController?.interactivePopGestureRecognizer?.enabled = false

অঙ্গভঙ্গি শনাক্তকারী কখন দৃশ্যে ইনস্টল করা হয় তা আপনি যদি না জানেন, এটি নিষ্ক্রিয় করার জন্য সময় মতো নির্ধারিত সময়ের জন্য অপেক্ষা করুন এটি কাজ করতে পারে বা নাও করতে পারে।
কাল্পেরিন

@ কাল্পেরিন এটি কাজ করার গ্যারান্টিযুক্ত নয়, যদিও এটি কখনও কখনও খুব সহজ সমাধান। আপনার নিজস্ব যুক্তি ব্যবহার করুন।
ড্যানি পি

এটি আইওএস 8.1 এর চেয়ে বেশি সংস্করণ রাখার জন্য কাজ করছে :)
আইচিরাগ

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

1
@iChirag সত্য। আমি উল্লেখ করেছি যে 8.1 এর জন্য আপনার 0.5 দ্বিতীয় বিলম্ব দরকার
ড্যানি পি

1

জন্য সুইফট 4 এই কাজ করে:

class MyViewController: UIViewController, UIGestureRecognizerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.interactivePopGestureRecognizer?.gesture.delegate = self
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)

        self.navigationController?.interactivePopGestureRecognizer?.gesture.isEnabled = false
    }

}

আপনার ইন্টারেক্টিভ পপ অঙ্গভঙ্গি প্রতিনিধিটিকে ওভাররাইড করা উচিত নয় কারণ এটি
অনাবন্ধিত

আমি মনে করি এটি সত্যিকার অর্থে ডেলিগেটকে অগ্রাহ্য করছে না তারা কেবল এই বুলিয়ান ভেরিয়েবলটি সংশোধন করছে যা তারা এ উদ্দেশ্যে দিয়েছিল তাই এটি কোনও সমস্যা হবে না
লোক এসএন

0

এটি বেশিরভাগ ভিউকন্ট্রোলারের জন্য আমার পক্ষে কাজ করেছিল।

self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false

এটি ইউআইপেজভিউকন্ট্রোলারের মতো কিছু দর্শনার্থীদের জন্য কাজ করছে না। ইউআইপিএজভিউকন্ট্রোলারের পৃষ্ঠায় কনট্রোলক কোডের নীচে নিয়ন্ত্রণকারী আমার জন্য কাজ করেছিল।

override func viewDidLoad() {
   self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
   self.navigationController?.interactivePopGestureRecognizer?.delegate = self
}
override func viewWillDisappear(_ animated: Bool) {
   self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
   self.navigationController?.interactivePopGestureRecognizer?.delegate = nil
}

ইউআইজিস্টেকার সনাক্তকারী ডেলিগেটে,

func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
   if gestureRecognizer == self.navigationController?.interactivePopGestureRecognizer {
      return false
}
      return true
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.