我只是做了一个示例来检查平移手势。
平移手势正在检测并且工作正常。
但是每当我在平移手势中给出第二个点时,例如 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 )
{
}
}
最佳答案
尽管设置了最大和最小触摸次数,我也遇到了这个错误。我正在对我的手势识别器进行子类化,并认为它与此有关。我通过在引用之前简单地检查 numberOfTouches
来解决它:
if ([gestureRecognizer numberOfTouches] > 0) {
CGPoint point = [gestureRecognizer locationOfTouch:0 inView:self.superview.window];
}
希望这对某人有帮助!
关于iphone - 在 iOS 中获取触摸位置时,PAN 手势崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12066821/