在iOS 7中的PushViewController

3
在一个UINavigationController的视图中,大约有6-7个UIButtons。所有按钮都会在UINavigationController上推出一个新视图。
这是我的问题,
iOS 7:
问题:如果我同时点击2个按钮,应用程序会加载一个新视图,但当我点击返回按钮时,它会导致应用程序崩溃。
原因:它将2个视图推入了堆栈。
在iOS 6中它运行良好,有没有办法限制在iOS 7中同时点击2个按钮?

这不是iOS 7的问题。即使在iOS 6中,如果同时按下两个按钮,也会得到相同的结果。您需要将UIButton的Exclusive属性设置为YES。 - Bhumeshwer katre
@Bhumeshwerkatre,是的,你说得对。但在iOS 6中,如果你同时触摸两个按钮,只会调用其中一个操作。而在iOS 7中,两个操作都会被调用。 - Chahal
我有同样的问题。现在我已经使用exclusivetouch设置了所有按钮,但如果我按返回按钮和另一个按钮,应用程序会崩溃。 - DigitalBrain_DEV
@digitalPad,我通过创建一个新类(继承自UIButton),然后使用一个名为“initWithCoder:(NSCoder *)inCoder”的方法来解决了这个问题(它允许您以编程方式设置按钮的属性)。然后,您只需要在nib文件(或创建按钮的文件)中更改自定义类名称(在按钮的检查器中)即可。 - Chahal
3个回答

3

在这里提供的一个答案中,我对其进行了修改并应用于整个应用程序。我创建了一个继承UIButton类的新类,并在该类中添加了一个方法。

 - (id)initWithCoder:(NSCoder *)inCoder{
       self = [super initWithCoder:inCoder];
       if (self) {
           //do custom
           [self setExclusiveTouch:YES];
       }
       return self;
 }

之后我使用了这个类来代替UIButton。

好处:不需要创建一个outlet。


1

我通过子类化UINavigationBar并覆盖layoutSubviews方法来解决了这个问题。大致如下:

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

原始答案 UIBarButtonItem,设置独占触摸


1
让插座执行这些按钮,然后:
[yourButton setExclusiveTouch:YES];

你的代码对我有效(稍作修改,在下面链接的答案中)。谢谢你的帮助。 - Chahal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接