我目前正在使用swift开发iOS应用。我用override来编写自己的tocuhesBegan和tochesEnded函数。现在我使用self.button。
QuotesView
它不会转到我在选择器中指定的函数。是否有其他人有这个问题,或者有人知道发生了什么事吗?
这是我在遇到问题时使用的代码。它是UIButton的子类。
答案 0 :(得分:3)
如果覆盖任何触摸方法,则应该覆盖所有四个和调用super。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[super touchesBegan:touches withEvent:event];
//your code
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
[super touchesEnded:touches withEvent:event];
//your code
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
[super touchesMoved:touches withEvent:event];
//your code
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
[super touchesCancelled:touches withEvent:event];
//your code
}
答案 1 :(得分:0)
您的视图和按钮可能有两个不同的手柄,以证明尝试触摸屏幕中的任何其他位置并检测到您的触摸,但是按下按钮时触摸处理并且永远不会传递给其他处理程序。您必须选择,拦截所有消息并处理是否应该在您执行所需操作之前/之后传递原始句柄,或者实现按钮处理程序并使其在链中传递消息:
覆盖命中测试可确保超级视图接收所有触摸 因为,通过将自己设置为命中测试视图,超级视图 截取并接收通常传递给的触摸 先查看子视图。如果superview不覆盖hitTest:withEvent:, 触摸事件首先与子视图相关联 发生了,从未发送到超级视图。