使用IBAction而不是touchesBegan:

时间:2012-08-29 21:22:44

标签: objective-c ios uitouch touchesbegan

设置IBAction以处理触摸事件与使用touchesBegan:touchesMoved等之间是否有任何真正的区别?哪些因素会使人优先于另一人?

1 个答案:

答案 0 :(得分:4)

辅助

如果IBAction表示附加到UIControlEventTouchUpInside之类的事件,那么控制事件会附加相当多的“魔力”,需要一些工作来复制触摸事件。

最明显的是,如果您触摸UIButton,然后在释放之前将距离拖离按钮,该按钮仍会发送其UIControlEventTouchUpInside事件。通过可用性实验选择了距离:当他们仍然认为他们按下按钮时,某人的手指会滑动多远?

我怀疑使用控件事件还可以让iOS 6 Guided Access和其他辅助功能更容易理解您的应用。

将视图与模型分开

使用控件事件意味着View不需要知道点击时它有什么效果。这在模型 - 视图 - 控制器范例中被认为是一件好事。理想情况下,您的Controller将接收事件,并更新模型以适应。

结论

如果你可以实现与控制事件的交互,那么最好这样做。

但有时候你的控制需要复杂的互动。如果您正在使用多点触控实现手指绘画之类的操作,那么您将需要知道完全触摸发生的位置和时间。在这种情况下,请与touchesBegantouchesMovedtouchesEndedtouchesCancelled实现互动。