1

我创建了 UIButton 的子类并实现了touchesBegantouchesEndedtouchesMoved. 我想提醒超级视图,只要在我的控制范围内发生任何触摸,它就需要执行一些操作。我首先尝试了这个:

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

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

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

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

4

0 回答 0