UIPanGestureRecognizer超越极限

时间:2014-12-29 04:44:51

标签: ios objective-c uipangesturerecognizer

我有一个用户可以放大的波形,我有一个编辑修剪器,我想要扩展并随波形一起平移。

我能够让编辑修剪器扩展并平移,但是当我平移时我遇到了一个问题:当编辑器达到我为它设置的界限时,它会摇晃并移动一点比它应该的更多到。

这是我的代码:

- (IBAction)handleWaveformPanGesture:(UIPanGestureRecognizer *)recognizer {

CGPoint translation = [recognizer translationInView:self.waveform];


if (self.waveform.zoomStartSamples > 0 && self.waveform.zoomEndSamples < self.waveform.totalSamples) {

    editor.center = CGPointMake(editor.center.x + translation.x, editor.center.y);
    [leftHandle setCenter:CGPointMake(editor.frame.origin.x, editor.center.y)];
    [rightHandle setCenter:CGPointMake((editor.frame.origin.x+editor.frame.size.width), editor.center.y)];
}

[recognizer setTranslation:CGPointZero inView:self.waveform];

}

zoomStartSamples是用户放大时在波形开始时看不到的波形样本,而zoomEndSamples是用户放大时波形末尾看不到的样本。所以我的约束设置如此如果用户没有放大,则编辑器不会移动。

一切都很有效,除非编辑器和波形达到其中一个约束条件,然后编辑器在左侧稍微后退一点,在前侧稍微前进一点。它的作用就像编辑有一点自己的动力。

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

因为编辑器有自己的大小。它应该在更受约束的“空间”中移动

假设您已经允许使用rect,在这种情况下允许编辑器移动的x大小将为:

{CGRectGetMinX(rect) + editor.size.width*0.5,CGRectGetMaxX(rect) - editor.size.widht*0.5}