我正在通过继承UIControl并重写以下方法来创建自定义控件*:
- beginTrackingWithTouch:withEvent:
- continueTrackingWithTouch:withEvent:
- endTrackingWithTouch:withEvent:
- cancelTrackingWithEvent:
此控件将支持多点触控交互。具体地,一个或两个手指可以向下触摸,拖动一段时间,然后全部独立地触摸。
我的问题出现在这些多点触控事件的最后,endTrackingWithTouch:withEvent:
。系统会在每个多点触控序列上对我的控件调用此方法一次,并在第一次触摸时调用它。这意味着将不再跟踪可能仍在拖动的第二次触摸。
这一系列动作就是这种现象的一个例子:
beginTracking
。 continueTracking
来更新我的控制权。beginTracking
被称为。{/ li>
continueTracking
来更新我的控制权。endTracking
被称为。{/ li>
问题在于此序列的最后三个步骤。 The documentation for UIControl
说endTrackingWithTouch:withEvent:
以下内容:
当给定事件的最后一次触摸完全结束时发送给控件,告诉它停止跟踪。
然而在我看来,在上面的步骤5中手指 B 触及之后,给定事件的最后一次触摸尚未完全结束。最后一次触摸是手指 A !
*范围滑块,如果您必须询问。 但是你已经有很多开源范围的滑块了,。是的,没错,但是这个支持多点触控和自动布局。
答案 0 :(得分:1)
我在使用多点触控的自定义控制中遇到了同样的问题
由于UIControl
是继承自UIView
的{{1}}的子类,因此可以随意使用:
UIResponder
方法
这些方法在- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
子类中工作正常。