ios - UIPanGestureRecognizer 超越限制

标签 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 是用户放大时在波形结尾看不到的样本。所以我的约束设置如下如果用户没有放大,编辑器不会移动。

一切都很好,除非编辑器和波形达到其中一个约束,然后编辑器在左侧稍微向后摇晃,在正面稍微向前摇晃。它表现得好像编辑器有一点自己的动力。

有什么想法吗?谢谢。

最佳答案

因为编辑器有自己的尺寸。它应该在更受限的“空间”中移动

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

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

关于ios - UIPanGestureRecognizer 超越限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27683518/

相关文章:

objective-c - 如何使用平移手势旋转文本字段?

ios - 如何通过 panGestureRecognizer 启用 collectionView 分页

iphone - 如何通过拖动边缘右角来增大或减小UIImageView的尺寸?

iphone - 如何使用 Graph Api iphone dev 获取 Facebook 事件的事件管理员?

ios - 将NSDictionary压缩为NSData的有效方法

ios - CIfilter中过滤值的最佳范围

objective-c - UIImage 的 UICollectionView 滚动性能不佳

ios - 如何让自动布局在 Xcode 中工作

iphone - 对象释放速度不够快,导致应用重新启动崩溃

ios - 当我连接 IBOutlet 或 IBAction 时,为什么我的 Storyboard 无法通过自定义包资源运行?