質問

Here is a ViewControllerA push a ViewControllerB, and in the ViewControllerB the leftBarButtonItem is set as following:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backBtnClicked:)];

After setting the leftBarButtonItem, the Back swipe gesture is not work. Is it possible to keep the swipe gesture?

役に立ちましたか?

解決

Because you've changed the left bar button item, you're telling the navigation controller to stop managing the navigation-based back-actions that the user can take.

To fix it, you can tell the navigation controller to continue accepting those gestures on the current view controller by using:

self.navigationController.interactivePopGestureRecognizer.delegate = self;

Where self if your view controller.

UIViewController privately implements UIGestureRecognizerDelegate, so you'll get a warning for this, but you can mitigate this by adding in the protocol conformance (<UIGestureRecognizerDelegate>) to your header, or to a class extension.

他のヒント

try to set interactivePopGestureRecognizer to nil

override func viewDidLoad() {
    super.viewDidLoad()
    self.interactivePopGestureRecognizer!.delegate = nil;

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top