导航栏中“返回”按钮按下时的自定义行为

3
我知道您可以向UINavigationBar添加自定义“返回”按钮,但这样做会删除具有锥形左侧的现有按钮,如What happens when back button is pressed in navigationBar所述。
是否有任何方法可以保留返回按钮的现有行为和外观,同时在按下按钮时也能得到通知?
基本上,我希望我的应用程序在触摸任何按钮时播放声音。我可以通过UITabBarController的委托来实现它,但是UINavgationBarController的委托没有这样的功能。

我猜,那个视图控制器的viewWillDisappear:或viewDidDisappear:会起作用吗? - Di Wu
你可以在返回按钮上方放置一个透明的按钮,捕获按下事件并将其发送出去。 - Jesse Anderson
1个回答

3
以下是视图控制器消失的可能性。
  1. 点击按钮(除了 backBarButtonItem)。
  2. 点击 backBarButtonItem
在任何一种情况下,viewWillDisappear: 方法都会被调用。保持一个布尔标志。我们将其命名为 isAnyButtonClicked。当单击任何按钮时,请设置 isAnyButtonClicked = YES。覆盖 viewWillDisappear: 方法,并在没有单击按钮时播放声音(即 isAnyButtonClicked == NO)。您的 viewWillDisappear: 可能如下所示:
- (void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    if (!isAnyButtonClicked) {

        // Play sound
        isAnyButtonClicked = NO;
    }
}

这基本上是有效的。我通过添加一些额外的调用来发出点击声,并加入了一个计时器,以便在上一个点击声之后至少200毫秒后才能生成另一个点击声。 - Karl

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