【问题标题】:how to disable click on back button, iphone如何禁用点击后退按钮,iphone
【发布时间】:2012-05-24 13:34:33
【问题描述】:

我的导航栏上有返回按钮和编辑按钮,如下所示

点击编辑按钮后,我有

我的问题:当我处于编辑模式时如何禁用单击后退按钮,以便用户在完成之前无法返回上一个屏幕.....

我正在尝试的是

self.navigationItem.backBarButtonItem.enabled   =   NO;

但是后退按钮仍然可以点击

PS : 我在导航栏添加返回按钮的方式是

self.navigationItem.hidesBackButton             =   NO;

我可以隐藏后退按钮,但我不想要那个选项...

请就这个问题给我建议。这里欢迎任何 cmets。

【问题讨论】:

  • stackoverflow.com/questions/10718686/…>
  • 我认为这不是一个好主意——而且可能违反了人们期望应用程序工作的方式。我推荐@Sulthan 的第一个建议:让人们单击“返回”,但在他们这样做时只结束编辑模式。您可能想了解其他应用如何处理类似情况。

标签: iphone objective-c


【解决方案1】:

最好的解决方案是在您离开屏幕时结束编辑模式,可能首先显示确认警报(UIAlertView 带有两个按钮“确定”和“取消”)。

但是,要回答这个问题 - 您必须创建一个外观与后退按钮相同的 UIButton(使用图像)。创建一个UIBarButtonItem,将此按钮作为其自定义视图,并在leftBarButtonItem 中使用(注意backBarButtonItem 不能有自定义视图)。

然后您就可以在该自定义视图上将enabled 设置为NO

编辑:我错了。 UIBarButtonItem 具有 enabled 属性。禁用后退按钮的问题可能是因为您在错误的navigationItem 上禁用了backBarButtonItem。后退按钮始终由堆栈中的前一个控制器定义。

【讨论】:

  • 你也可以在真正的后退按钮上放一个透明按钮——我认为这更容易......但这听起来像糟糕的用户界面
  • 尽管它没有自定义视图但 bacBarButtonItem 是 UIBarButtonItem 并且 UIBarButtonItem 是 UIBarItem 的子类并且 UIBarItem 确实具有 `enalble' 属性。那么为什么我们不能使用它呢。
【解决方案2】:

如果按钮被阻止,也许你应该隐藏它。因为在我看来,按钮无响应对用户不利。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];

    [UIView animateWithDuration:0.35f animations:^{
        self.navigationItem.hidesBackButton = editing;       
    }];
}

【讨论】:

    【解决方案3】:

    self.navigationItem.backBarButtonItem.enabled = NO;

    你把上面的代码放在哪里。将上面的代码放在编辑按钮的IBAction方法中。

    【讨论】:

    • UIBarButtonItem 不是UIView 的子类,并且没有enabled 属性。你回答的不正确。
    • UIBarButtonItem 是 UIBarItem 的子类,并且 UIBarItem 确实具有 enabled 属性。所以他的解决方案是正确的,但我不知道为什么它不起作用
    • @ttran 你说得对,我从来没有注意到UIBarButtonItem 有另一个超类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2019-10-08
    • 2013-06-05
    相关资源
    最近更新 更多