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】:
交互式弹出手势识别器通过UINavigationController
的interactivePopGestureRecognizer
属性公开。您可以添加自己的控制器作为手势识别器的目标并做出适当的响应:
@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 中推送动画不流畅