我有一个)子类(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 什么都不做。这是上已经做了 UIControls,但是不在 UIViews

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top