我创建了 UIButton 的子类并实现了touchesBegan
、touchesEnded
和touchesMoved
. 我想提醒超级视图,只要在我的控制范围内发生任何触摸,它就需要执行一些操作。我首先尝试了这个:
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
if(self.superview != nil)
{
[self.superview touchesMoved:touches withEvent:event];
}
}
结果很奇怪:第一个 touchesMoved 事件会正确地冒泡到超级视图,但之后就不会再冒泡了。我尝试打印出 self.super 和 self.superview 的指针值,它们永远不会改变,所以内存没有什么奇怪的。
接下来我尝试将父视图控制器中的选择器作为SEL
类型传递给自定义控件,从而创建一种回调,但 XCode 不喜欢这样(运行时我收到“无法识别的选择器发送到实例”的错误消息)。
我可能只是实现一个协议来拦截来自我的控件的事件(委托样式)并将我的视图控制器注册为该类型的委托。想法?