2009-06-22 80 views
3

我有一个非常简单的UIViewController。它使用Interaface Builder中创建的视图进行初始化,该视图仅包含UIImageView。当用户触摸屏幕时,我想要调用UIViewController的touchesBegan消息。所以,我重写它并添加了一些日志记录,但没有发生任何事情。UIViewController没有收到touchesBegan消息

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

还有什么我忘记了吗?

回答

3

好吧,我是个假人。它工作正常。问题是,我没有意识到我发送了释放消息给UIViewController,而没有先保留在其他地方。所以这是造成这个问题的原因。

0

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

确保您在接口构建器中将touchesBegan事件与IBAction连接起来?

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

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

0

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