我只是做了一个示例来检查平移手势。
平移手势正在检测并且工作正常。
但是每当我在像 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/