【发布时间】:2010-11-27 23:15:01
【问题描述】:
我有一个 UIView 子类(CustomView 用于此问题),它自己处理所有 touches 事件(开始、移动、结束、取消)。我还有一个 UIButton,它是 CustomView 的兄弟,与它重叠。
例如,我的视图层次结构如下所示:
- UIView(控制器的视图)
- 带框架的CustomView (0, 0, 300, 300)
- 带框架的 UIButton (0, 0, 100, 50)
我希望 CustomView 在用户拖出 UIButton 后捕获触摸事件。通过调试日志,似乎UIControlEventTouchDragExit 事件是要拦截的事件(尽管直到触摸距离按钮大约 100 像素时它才会触发,但这对于这个问题并不重要)。
理想情况下,当拖动退出事件被触发时,按钮将停止接收触摸移动事件,CustomView 将收到一个touchesBegan 事件(即使我需要以某种方式自己伪造一个),以及所有未来的触摸事件(@ 987654327@ 等)将被发送到 CustomView。
我尝试了以下方法,但没有任何效果:
-(void)btnTouchDragExit:(id)sender
{
UIButton * btn = sender;
[btn resignFirstResponder];
[customView becomeFirstResponder];
}
我认为底层 UITouch 对象(在触摸事件中是一致的)没有被重新定位为指向 CustomView。怎样才能达到想要的效果?
【问题讨论】:
标签: iphone uiview uibutton uitouch first-responder