我不要UIButton
或类似的东西。我想直接继承UIControl
并进行自己的非常特殊的控制。
但是由于某种原因,我重写的任何方法都不会被调用。目标 Action 的东西起作用,并且目标接收适当的 Action 消息。但是,在我的UIControl
子类中,我必须捕获触摸坐标,而这样做的唯一方法似乎是重写这些家伙:
- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"begin touch track");
return YES;
}
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"continue touch track");
return YES;
}
即使
UIControl
用UIView
和initWithFrame:
中的指定初始值设定项实例化,它们也永远不会被调用。我可以找到的所有示例始终使用
UIButton
或UISlider
作为子类的基础,但是我想更接近UIControl
,因为这就是我想要的源:快速且无延迟的Touch坐标。 最佳答案
我知道这个问题很古老,但是我遇到了同样的问题,我想我应该给我2美分。
如果您的控件根本没有任何 subview ,则可能不会调用beginTrackingWithTouch
,touchesBegan
等,因为这些 subview 吞没了触摸事件。
如果您不希望这些 subview 处理触摸,则可以将userInteractionEnabled
设置为NO
,因此 subview 只是将事件传递过来。然后,您可以覆盖touchesBegan/touchesEnded
并在那里管理所有触摸。
希望这可以帮助。
关于ios - 如何正确地继承UIControl?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1245248/