Ger*_*eon 3 back uinavigationbar swipe ios
我有一个UINavigationBar拦截后退按钮点击,如果有未保存的更改,它会提醒用户.这是基于UINavigationController和UINavigationBarDelegate.ShouldPopItem()与MonoTouch使用UINavigationBarDelegate协议和实现的解决方案.- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item;
现在,iOS7已经引入了向后移动的手势,我也想拦截它,但是无法使用我迄今为止发现的解决方案,即使用[self.interactivePopGestureRecognizer addTarget:self action:@selector(handlePopGesture:)];和
- (void)handlePopGesture:(UIGestureRecognizer *)gesture {
if (gesture.state == UIGestureRecognizerStateEnded) {
[self popViewControllerAnimated:NO];
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这确实会弹出视图,但它会使导航栏按钮保持原位,所以我最终会得到一个无处可用的后退按钮,以及我添加到导航栏的所有其他导航按钮.有小费吗?
要拦截后滑动手势,您可以将其设置self为手势(<UIGestureRecognizerDelegate>)的委托,然后gestureRecognizerShouldBegin根据未保存的更改返回YES或NO :
// in viewDidLoad
self.navigationController.interactivePopGestureRecognizer.delegate = self;
// ...
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if ([gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) {
if (self.dirty) {
// ... alert
return NO;
} else
return YES;
} else
return YES;
}
Run Code Online (Sandbox Code Playgroud)
在警报中,您可以询问用户是否还想要返回,在这种情况下,请将控制器弹出 alertView clickedButtonAtIndex:
希望这个对你有帮助.
| 归档时间: |
|
| 查看次数: |
2400 次 |
| 最近记录: |