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