如何"转让"第一响应者从一)到另一个?
-
07-07-2019 - |
题
我有一个)子类(CustomView
对于这个问题),都有其自己处理所有 touches
事件(开始,移动,结束,取消).我也有一个 UIButton
这是一个兄弟的 CustomView
重叠。
例如,我看层次看起来是这样的:
- )(控制器的看法)
- CustomView与框架(0,0,300,300)
- UIButton与框架(0,0,100,50)
我会喜欢的CustomView捕捉摸事件,一旦户已经拖出UIButton.通过调试记录,它的出现, UIControlEventTouchDragExit
事件是一个拦截(虽然它不火,直到触摸是在周围100素离开按钮,但这并不重要这个问题)。
理想的是,当拖出的事件是解雇、按钮将会停止接触动活动,CustomView会得到一个 touchesBegan
事件(即使我需要伪造一个自己以某种方式),以及所有未来触摸事件(touchesMoved
, 等)将发送给CustomView.
我已经尝试了以下,并且它不具有任何效果:
-(void)btnTouchDragExit:(id)sender
{
UIButton * btn = sender;
[btn resignFirstResponder];
[customView becomeFirstResponder];
}
我想基础 UITouch
对象(这是一致的触摸的活动)不在的目标重新确定要点在CustomView.我如何可以实现所期望的效果?
解决方案
只是使用hitTest:withEvent:图找出图"应该"可接受的事件,然后向前对事件的适当图。你可能需要做一点点的周围跳舞拦截事件之前他们走到按钮,但这是什么hitTest:withEvent:作出。
其他提示
你要重写 canBecomeFirstResponder
返回是否 becomeFirstResponder
什么都不做。这是上已经做了 UIControl
s,但是不在 UIView
s
不隶属于 StackOverflow