将touchesMoved事件传递给superview只传递第一个事件

时间:2012-04-04 13:56:57

标签: iphone ios cocoa-touch ipad touch-event

我已经创建了UIButton的子类,并为touchesBegantouchesEndedtouchesMoved实现了方法。我想提醒超级视图,只要我的控件内发生任何触摸,它就需要执行一些操作。我第一次尝试这个:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
  if(self.superview != nil)
  {
    [self.superview touchesMoved:touches withEvent:event];
  }
}

结果很奇怪:第一次触摸移动事件会正确地冒泡到超级视图,但之后就没有了。我尝试打印出self.super和self.superview的指针值,它们永远不会改变,所以内存没什么奇怪的。

我接下来尝试将父视图控制器中的选择器作为SEL类型传递给自定义控件,从而创建一种回调,但XCode不喜欢(我收到了“无法识别的选择器”的错误消息发送到实例“运行时”。

我可能只是实现一个协议来拦截来自我的控件(委托式)的事件,并将我的视图控制器注册为该类型的委托。想法?

0 个答案:

没有答案