美文网首页iOS经验demoIOS-Tips
【TIP】按钮事件同时触发的解决办法

【TIP】按钮事件同时触发的解决办法

作者: 千煌89 | 来源:发表于2015-03-31 15:57 被阅读940次

app里经常有这种情况,点击button1,push AController,点击button2,push BController。当两个按钮一起点的时候,navigationController会接连push A、BController,在iOS8以下的版本中,按返回就会崩溃。这种情况的解决方法很简单,分别给button1,button2设置button.exclusiveTouch = YES;就行

setExclusiveTouch是UIView的一个方法,所有继承UIView的子类都可以使用这个方法,可是很不幸的,UIBarButtonItem不在此列,它继承自NSObject。

当导航栏上的按钮使用- (instancetype)initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action;这个方法创建时,它不可以使用setExclusiveTouch这个方法。

解决方法有很多:

  • 在实例完成之后,添加如下代码:
for(UIView *temp in self.navigationController.navigationBar.subviews)
{
    [temp setExclusiveTouch:YES];
}

将navigationBar上的所有view设置成独自响应。

  • 重写NavigationBar,并在navigationBar里设置如下:
-(void)layoutSubviews {
    [super layoutSubviews];
    for (UIView *view in self.subviews) {
        view.exclusiveTouch = YES;
    }
}

相关文章

网友评论

  • 三十一_iOS:早两年看到这个就不会多写几百行的代码了 :sob: :sob: :sob: :sob: :sob: :sob:

本文标题:【TIP】按钮事件同时触发的解决办法

本文链接:https://www.haomeiwen.com/subject/qeloxttx.html