我只是做了一个示例来检查平移手势。

平移手势正在检测并且工作正常。

但是每当我在像 CGPoint secondPoint = [sender locationOfTouch:1 inView:self.imageView]; 这样的平移手势中给出第二个点时,它就会崩溃。

控制台正在发出消息

 *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[UIPanGestureRecognizer locationOfTouch:inView:]: index (1) beyond bounds (1).'

当我使用 panGestureRecognizer.maximumNumberOfTouches = 1; panGestureRecognizer.minimumNumberOfTouches =1;它仍然崩溃。

当我使用 panGestureRecognizer.maximumNumberOfTouches = 2; panGestureRecognizer.minimumNumberOfTouches = 2;那么它没有进入
- (void)panGestureHandler:(UIPanGestureRecognizer *)sender method.

任何人都可以请指导我哪里出错了。

提前致谢。希望得到您的帮助。

我是这样试的。
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGestureHandler:)];
     panGestureRecognizer.maximumNumberOfTouches = 2;
     [self.imageView addGestureRecognizer:panGestureRecognizer];

}
- (void)panGestureHandler:(UIPanGestureRecognizer *)sender
{
    if ([sender state] == UIGestureRecognizerStateBegan )
    {
        CGPoint firstPoint = [sender locationOfTouch:0 inView:self.imageView];
        CGPoint secondPoint = [sender locationOfTouch:1 inView:self.imageView];
    }
    else if ([sender state] ==UIGestureRecognizerStateEnded )
    {
    }

}

最佳答案

您提供了 maximumNumberOfTouches ,但没​​有提供 minimumNumberOfTouches 。即,手势可以在第一次触摸后被识别。在这种情况下,可能不存在第二次触摸,并且您的索引 1(指的是第二个元素)超出了数组边界。

关于iphone - 在 iOS 中获取触摸位置时 PAN Gesture 崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12066821/

10-08 20:56