UIViewController没有收到touchesBegan消息

时间:2009-06-22 05:29:07

标签: iphone cocoa-touch

我有一个非常简单的UIViewController。它是用我在Interaface Builder中创建的视图初始化的,它只包含一个UIImageView。当用户触摸屏幕时,我希望调用UIViewController的touchesBegan消息。所以,我重写它并添加了一些日志记录,但什么也没发生。

我根本没有做任何“特殊”的事情,因为自从UIViewController继承自UIResponder以来,我希望这个开箱即用。根据我的理解,默认情况下UIImageViews禁用了用户交互,因此我通过InterfaceBuilder和我的UIViewcontroller的viewDidLoad方法启用了它(我已将UIImageView绑定到IBOutlet)。我还要确保在Interface Builder的父视图中启用了userInteraction。

我忘记了其他任何事情吗?

3 个答案:

答案 0 :(得分:3)

好的,我是假的。它工作正常。问题是,我没有意识到我正在向UIViewController发送一条发布消息而没有先将其保留在其他位置。所以这导致了问题。

答案 1 :(得分:0)

很难说你的问题是什么,我不知道你的意思是什么?

确保在Interface Builder中将touchesBegan事件与IBAction连接?

您必须创建一个IBAction函数来处理事件,并将even显式连接到IBAction。它并不像简单地覆盖方法那么简单。

虽然您将视图绑定到IBOutlet,但您需要使用IBAction连接事件,否则您将无法获得任何这些事件。

答案 2 :(得分:0)

请忽略第一个答案。事实上,它就像覆盖自定义视图中的方法一样简单。不接收touchesBegan的最常见原因是没有实现canBecomeFirstResponder方法。这不是IB连接,这些是触摸处理的标准方法。