iOS 在rootViewController侧滑手势冲突导致Push页面卡死

本文详细介绍了在iOS应用中遇到的右滑返回手势导致页面卡顿的问题及解决方案。通过在页面进入和离开时禁用和启用右滑返回手势,有效解决了程序卡顿现象,提升了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:https://blog.youkuaiyun.com/weixin_34303897/article/details/87421982

在RootViewController右划返回手势也可以响应,因为没有上一级页面,导致整个程序页面不响应,当页面从A跳转到B页面时,偶尔会卡死。我以为是b页面的viewdidload做的事情太多了,也做了简化,包括加上线程处理。

后来发现,压根不是这回事,即使跳到超级简单的页面也会卡。当按下home键,再次点开app时,又能跳到b页面了。

APP做出如下修改

在一级页面进入和离开时 分别添加禁用和开启右滑返回手势

 
  1. -(void)viewDidAppear:(BOOL)animated{

  2.  
  3. [super viewDidAppear:animated];

  4.  
  5. [self forbiddenSideBack];

  6.  
  7. }

  8.  
  9. - (void)viewDidDisappear:(BOOL)animated {

  10.  
  11. [super viewDidDisappear:animated];

  12.  
  13. [self resetSideBack];

  14.  
  15. }

  16.  
  17. 禁用手势

  18.  
  19. /**

  20.  
  21. * 禁用边缘返回

  22.  
  23. */

  24.  
  25. -(void)forbiddenSideBack{

  26.  
  27. self.isCanSideBack = NO;

  28.  
  29. //关闭ios右滑返回

  30.  
  31. if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {

  32.  
  33. self.navigationController.interactivePopGestureRecognizer.delegate=self;

  34.  
  35. }

  36.  
  37. }

  38.  
  39. /*

  40.  
  41. 恢复边缘返回

  42.  
  43. */

  44.  
  45. - (void)resetSideBack {

  46.  
  47. self.isCanSideBack=YES;

  48.  
  49. //开启ios右滑返回

  50.  
  51. if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {

  52.  
  53. self.navigationController.interactivePopGestureRecognizer.delegate = nil;

  54.  
  55. }

  56.  
  57. }

  58.  
  59. - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer {

  60.  
  61. return self.isCanSideBack;

  62.  
  63. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值