为什么我的导航栏控制器不在导航栏视图上处理touchesEnded事件?

时间:2013-01-02 19:06:12

标签: objective-c ios uinavigationcontroller uinavigationbar touch-event

This question最接近于描述我的问题,但我在一般过程中遗漏了一些东西,答案最终会进入“没关系,我想出了一个未描述的不同解决方案”。

就我而言,我有一个带导航栏及其控制器的XIB。对于类字段,我填写了我的自定义类名。这是一个显示XIB的屏幕截图,因为我认为这应该是一个相对简单和直接的设置......

Navigation bar and its controller.

我想要的东西(比如开头的链接)是触发的touchesEnded事件,这样我就能做点什么。这适用于“视图”;我可以以编程方式在事件中写入,设置断点,并看到断点被击中。但是,我的更高级别目标是在此时将新视图推送到应用程序 - 我不应该在视图的功能中执行此操作,而且我无法做到这一点,因为我的视图无法访问导航控制器(除非我做一些技巧来检索控制器,但我想干净利落地完成这一过程。)

即使它以编程方式为视图工作,touchesEnded事件也不会被导航视图的控制器命中。我将它设置为代理,如下图所示,我怀疑这可能只是我需要做的一部分。

I set the delegate of the Navigation Bar "view" to be the navigation controller.

现在我已经设置了委托,并且已经看到touchesEnded事件被视图命中,为什么我的导航栏视图控制器没有接受touchesEnded事件?我错了,而应该想出如何从导航栏的视图中推出一个新的视图,因为我已经看到那个触及的事件被击中了?这似乎是我应该在导航栏视图的控制器中处理的东西,但是我无法让控制器触及touchesEnded事件。

谢谢!

2 个答案:

答案 0 :(得分:1)

然后你必须覆盖UINavigationBar,并覆盖becomeFirstResponder,返回YES。

答案 1 :(得分:1)

从您的帖子中不清楚,但看起来您正在向您的应用明确添加导航栏,这是真的吗?如果您的控制器嵌入在导航控制器中,则无需执行此操作。您可以将视图添加到导航栏,并将UIImage视图添加为子视图。如果您将用户互动设置为开启,并在图像视图中添加点按手势识别器,您应该能够获得所需的效果。

相关问题