gpt4 book ai didi

ios - 如何在 UIView 上设置 UIPanGestureRecognizer 区域的限制?

转载 作者:行者123 更新时间:2023-11-28 17:49:44 25 4
gpt4 key购买 nike

-(void)move:(UIPanGestureRecognizer *)recognizer
{
UIGestureRecognizerState state = [recognizer state];

if (state == UIGestureRecognizerStateBegan || state == UIGestureRecognizerStateChanged)
{
CGPoint translation = [recognizer translationInView:recognizer.view];
[recognizer.view setTransform:CGAffineTransformTranslate(recognizer.view.transform, translation.x, translation.y)];
[recognizer setTranslation:CGPointZero inView:recognizer.view];
}
}

最佳答案

您可以使用多种方法;

首先,您可以在主视图中添加一个透明 subview ,并将平移手势分配给该 subview 。因此,只会识别 subview 上的平移手势,您可以直接平移主视图。

像这样:

UIGestureRecognizerState state = [recognizer state];

if (state == UIGestureRecognizerStateBegan || state == UIGestureRecognizerStateChanged)
{
CGPoint translation = [recognizer translationInView:self.panView];

[self.mainView setTransform:CGAffineTransformTranslate(self.mainView.transform, translation.x, translation.y)];

[recognizer setTranslation:CGPointZero inView:self.panView];
}

PanGesture

(出于显示目的我没有让 panView 完全透明,您应该使用 clearColor 而不是将 alpha 设置为 0。)

(显然,panView 是 mainView 的 subview ,因此当 mainView 被翻译时,panView 也被翻译。)

其次,您可以自定义您的 UIPanGestureRecognizer 以实现 touchesBegan: 并举起一个标志(例如 shouldRecognizeNow 并 checkin move: method) 如果您不希望触摸在特定位置开始时被识别。 (您可能需要检查 CGRectContainsPoint: 方法。)

我不打算详细介绍,这里是开始的链接:

https://stackoverflow.com/a/19145354/3227743

关于ios - 如何在 UIView 上设置 UIPanGestureRecognizer 区域的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45129337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com