bob*_*age 7 iphone objective-c
我目前正在使用......
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
Run Code Online (Sandbox Code Playgroud)
检测滑动.我已经把一切都搞定了.唯一的问题是如果用户触摸某些东西(例如UIButton或其他东西),- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {则不会调用它.是否有类似touchesBegan的东西,但如果我在视图中触摸任何地方,它会起作用吗?
大卫先生,谢谢你
Cos*_*que 13
触摸事件传播如下:
换句话说,-hitTest:withEvent:用于确定触摸的目标视图,之后目标视图获取所有-touches ...:withEvent: messages.如果您需要拦截可能在UIButton中开始的滑动手势,则必须覆盖-hitTest:withEvent:以返回self.
但是这种方法存在问题.一旦你这样做,你的按钮将停止工作,因为它不会得到任何-touches ...:withEvent:消息.除非您检测到滑动手势,否则您必须手动将触摸转发到子视图.这是一个严重的痛苦的屁股,并不保证完全工作.这就是UIGestureRecognizers的用途.
另一种方法是子类化UIWindow并覆盖-sendEvent : ,这可能在您的情况下更好地工作.
无论如何,请务必仔细阅读事件处理文档.其他可怕的警告说:
UIKit框架的类不是为了接收不受它们约束的触摸而设计的; 在程序方面,这意味着UITouch对象的view属性必须包含对框架对象的引用,以便处理触摸.
| 归档时间: |
|
| 查看次数: |
9778 次 |
| 最近记录: |