如何以编程方式在更多视图上连接更多UIPanGestureRecognizer?

时间:2015-08-20 11:48:25

标签: ios uigesturerecognizer

如何制作一个UIPanGestureRecognizer?我有多个视图,每个视图都有自己的UIPanGestureRecognizer。我怎样才能做到这一点,当用户将手指放在屏幕上并将手指移过屏幕时,视图标记正在改变,视图也会改变,直到用户将手指从屏幕上抬起来?这有点难以解释......我希望你能理解。谢谢您的回答。

1 个答案:

答案 0 :(得分:1)

我相信您正在尝试创建一个可以处理多个视图的平移手势识别器,并且您可以在平移期间了解用户手指下的哪个视图。如果是这种情况那么这应该有帮助...

创建一个视图,作为您希望参与平移的所有视图的容器。

enter image description here

我给每个人看了它自己的颜色,使它在视觉上显而易见。

enter image description here

我还为每个视图添加了一个标签,以显示它的标签。

将单个UIPanGestureRecognizer连接到容器视图,并将其选择器附加到视图控制器类中的方法。

- (IBAction)panGestureRecognizerTriggered:(UIPanGestureRecognizer *)recognizer
{
    CGPoint location = [recognizer locationInView:recognizer.view];

    // Find the view that is currently under the user's finger
    for (UIView *view in recognizer.view.subviews) {
        if (CGRectContainsPoint(view.frame, location)) {
            NSLog(@"View %d at %@", (int)view.tag, NSStringFromCGPoint((location)));

            // Found the view, stop searching :)
            break;
        }
    }
}

此方法迭代附加到手势识别器的视图的子视图,并确定当前哪个子视图位于用户手指下,打印标签和当前位置。

不可否认,如果您处理大量观点,这可能不会特别有效,但对于像这样的简单案例,它可以完成工作。