iOS 7 中的 PushViewController

Posted

技术标签:

【中文标题】iOS 7 中的 PushViewController【英文标题】:PushViewController in iOS 7 【发布时间】:2013-11-26 12:39:59 【问题描述】:

UINavigationController's 视图上大约有 6-7 个UIButtons。 所有按钮都会在UINavigationController 上推送一个新视图。

这是我的问题,

ios 7:

问题:如果我同时点击 2 个按钮,应用程序正在加载一个新视图,但是当我按下返回按钮时,应用程序会崩溃。

原因:它正在向堆栈推送 2 个视图。

对于 iOS 6,它运行良好,有什么方法可以限制在 iOS 7 上同时点击 2 个按钮?

【问题讨论】:

这不是 iOS 7 的问题。即使在 iOS 6 中,如果同时按下两个按钮也会得到相同的结果。您需要将 UIButton 的 Exclusive 属性设置为 YES。 @Bhumeshwerkatre,是的,您是对的,但在 iOS 6 中,如果您同时触摸两个按钮,则会调用这两个按钮中的一个操作。而在 iOS 7 中,这两个操作都在调用。 我也有同样的问题。现在我用 Exclusivetouch 设置我的所有按钮,但如果我按下返回按钮和另一个按钮,应用程序崩溃 @digitalPad ,我通过创建一个新类(由 UIButton 继承)解决了它,然后使用了一个方法 'initWithCoder:(NSCoder *)inCoder' (它允许您以编程方式设置按钮的属性),您需要做的就是在 nib 文件(或您创建按钮的文件)中更改自定义类名(在按钮的检查器中)。 【参考方案1】:

使用此处提供的答案之一,我为我的整个应用程序修改了它。我创建了一个继承 UIButton 类的新类,并在该类中添加了一个方法

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

之后我使用了这个类而不是 UIButton。

好处:无需出风头。

【讨论】:

【参考方案2】:

让奥特莱斯做这些按钮,然后:

[yourButton setExclusiveTouch:YES];

【讨论】:

您的代码对我有用(稍作修改,present in answers below link)。感谢您的帮助。【参考方案3】:

我通过继承 UINavigationBar 和覆盖 layoutSubviews 方法来解决这个问题。像这样的:

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

原答案UIBarButtonItem, set exclusive touch

【讨论】:

以上是关于iOS 7 中的 PushViewController的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap:iOS 7 中的 UIPickerView 不会像在 iOS 6 中那样自动调整字体大小。关于如何在 iOS 7 中实现的任何解决方案?

ios 7 中的区域监控

iOS 6 + 7 中的 iOS 隐藏状态栏和标签栏

iOS 7 中的 MultipeerConnectivityFramework

iOS 7 中的 PushViewController

容器覆盖 UITableView - iOS 7 中的 SearchBar / SearchDisplayController