我有一个BOol变量(_isAnimating),下面的代码似乎工作:
- (voID)navigationController:(UINavigationController *)navigationController willShowVIEwController:(UIVIEwController *)vIEwController animated:(BOol)animated{ _isAnimating = YES;}- (voID)navigationController:(UINavigationController *)navigationController dIDShowVIEwController:(UIVIEwController *)vIEwController animated:(BOol)animated{ _isAnimating = NO;}
但是,它在iOS7中的滑动手势不正确.假设我的导航是:root->视图A – >视图B.我现在在B.
>在滑动开始(从B转到A),调用funcion“navigationController:willShowVIEwController:animated:(BOol)animated”,然后_isAnimating = YES.
>正常情况是刷卡完成(返回A),调用函数“navigationController:dIDShowVIEwController:animated:(BOol)animated”,然后_isAnimating = NO.这种情况可以,但是
>如果用户可能只是刷一半(半转换到A),那么不想滑动到上一个视图(查看A),他再次转到当前视图(再次保留B).那么函数“navigationController:dIDShowVIEwController:animated:(BOol)animated”没有被调用,我的变量有不正确的值(_isAnimating = YES).
在这种异常情况下,我没有机会更新我的变量.有没有办法更新导航状态?谢谢!
解决方法 解决问题的线索可以在UINavigationController的interactivePopGestureRecognizer属性中找到.这是识别器,通过滑动手势响应d出控制器.您可以注意到,当用户抬起手指时,识别器的状态更改为UIGestureRecognizerStateEnded.所以,除了导航控制器委托,你应该添加目标到Pop Recognizer:UIGestureRecognizer *popRecognizer = self.navigationController.interactivePopGestureRecognizer;[popRecognizer addTarget:self action:@selector(navigationControllerPopGestureRecognizerAction:)];
每当Pop Recognizer发生变化,包括手势的结束,这个动作就会被调用.
- (voID)navigationControllerPopGestureRecognizerAction:(UIGestureRecognizer *)sender{ switch (sender.state) { case UIGestureRecognizerStateEnded: // Next cases are added for relaibility case UIGestureRecognizerStateCancelled: case UIGestureRecognizerStateFailed: _isAnimating = NO; break; default: break; }}
附:不要忘记,从iOS 7开始,interactivePopGestureRecognizer属性可用!
总结以上是内存溢出为你收集整理的完成转换后,ios – io7导航检查全部内容,希望文章能够帮你解决完成转换后,ios – io7导航检查所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)