iOS经验demoIOS-Tips

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

2015-03-31  本文已影响940人  千煌89

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设置成独自响应。

-(void)layoutSubviews {
    [super layoutSubviews];
    for (UIView *view in self.subviews) {
        view.exclusiveTouch = YES;
    }
}
上一篇下一篇

猜你喜欢

热点阅读