iOS 7 uinavigationcontroller 如何检测滑动?

Posted

技术标签:

【中文标题】iOS 7 uinavigationcontroller 如何检测滑动?【英文标题】:iOS 7 uinavigationcontroller how to detect swipe? 【发布时间】:2013-12-17 20:52:34 【问题描述】:

在新的 ios 7 UINavigationController 中,有一个滑动手势可以在视图之间切换。 有没有办法检测或拦截手势?

【问题讨论】:

I won't disable it。你让它听起来像你在“淘气” 这只是因为我阅读了有关“如何在 uinavigationcontroller 中禁用滑动手势”的类似主题。所以我想清楚^^ 【参考方案1】:

交互式弹出手势识别器通过UINavigationControllerinteractivePopGestureRecognizer 属性公开。您可以添加自己的控制器作为手势识别器的目标并做出适当的响应:

@implementation MyViewController

...

- (void)viewDidLoad

    [super viewDidLoad];

    [self.navigationController.interactivePopGestureRecognizer addTarget:self 
                                                                  action:@selector(handlePopGesture:)];



- (void)handlePopGesture:(UIGestureRecognizer *)gesture

    if (gesture.state == UIGestureRecognizerStateBegan)
    
        // respond to beginning of pop gesture
    
    // handle other gesture states, if desired


...

@end

【讨论】:

【参考方案2】:

这里是Austin's answer,在 Swift 中。使用this post 构造选择器,我发现以下工作。

override func viewDidLoad() 
    super.viewDidLoad()
    self.navigationController?.interactivePopGestureRecognizer?.addTarget(self, action:#selector(self.handlePopGesture))


func handlePopGesture(gesture: UIGestureRecognizer) -> Void 
    if gesture.state == UIGestureRecognizerState.Began 
        // respond to beginning of pop gesture
    

【讨论】:

这对我没有反应......我只是想在手势识别上打印“你好” 我必须在func handlePopGesture 前面添加@objc 以使其成为有效代码。

以上是关于iOS 7 uinavigationcontroller 如何检测滑动?的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 中的 UITabBarController 适用于 iOS 8 但不适用于 7

iOS 7 在 UINavigationController 中呈现模式视图?

带有 UINavigationController 的 iOS 7 自定义当前转换

UINavigationController 在 iOS 7 中推送动画不流畅

iOS 7 中的 UINavigationController 后退按钮雪佛龙

iOS 7 UINavigationController 推送动画阴影