我不要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;
}

即使UIControlUIViewinitWithFrame:中的指定初始值设定项实例化,它们也永远不会被调用。

我可以找到的所有示例始终使用UIButtonUISlider作为子类的基础,但是我想更接近UIControl,因为这就是我想要的源:快速且无延迟的Touch坐标。

最佳答案

我知道这个问题很古老,但是我遇到了同样的问题,我想我应该给我2美分。

如果您的控件根本没有任何 subview ,则可能不会调用beginTrackingWithTouchtouchesBegan等,因为这些 subview 吞没了触摸事件。

如果您不希望这些 subview 处理触摸,则可以将userInteractionEnabled设置为NO,因此 subview 只是将事件传递过来。然后,您可以覆盖touchesBegan/touchesEnded并在那里管理所有触摸。

希望这可以帮助。

关于ios - 如何正确地继承UIControl?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1245248/

10-09 19:36