设置 IBAction 来处理您的触摸事件与使用 touchesBegan:touchesMoved 等之间有什么真正的区别吗?哪些考虑因素会导致一个优于另一个?
最佳答案
辅助功能
如果通过 IBAction
你的意思是附加到像 UIControlEventTouchUpInside
这样的事件,那么有相当多的“魔法”附加到控制事件,这将需要一些工作来复制触摸事件.
最明显的是,如果您触摸一个UIButton
,然后在释放之前将按钮拖离短距离,按钮仍会发送其UIControlEventTouchUpInside
事件。距离是通过可用性实验选择的:当某人的手指仍然认为他们正在按下按钮时,他们的手指可以滑动多远?
我怀疑使用控制事件也会使 iOS 6 Guided Access 变得更容易和其他辅助工具来了解您的应用。
从模型中分离 View
使用控件事件意味着 View 不需要知道它在点击时会产生什么效果。这在模型- View - Controller 范例中被认为是一件好事。理想情况下,您的 Controller 将接收事件,并更新模型以适应。
结论
如果您可以实现与控制事件的交互,那么最好这样做。
不过,有时您的控件需要复杂的交互。如果您要使用多点触控实现手指绘画之类的功能,您将需要确切知道触摸发生的位置和时间。在这种情况下,实现与 touchesBegan
、touchesMoved
、touchesEnded
和 touchesCancelled
的交互。
关于objective-c - 使用 IBAction 而不是 touchesBegan :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186712/