iphone - 在 iOS 中获取触摸位置时,PAN 手势崩溃

标签 iphone objective-c ios uigesturerecognizer uipangesturerecognizer

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

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

但是每当我在平移手势中给出第二个点时,例如 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/

相关文章:

ios - 在 foreach 和 dispatch 之后执行操作

ios - 如何更改sendSynchronousRequest:urlRequest,因为已弃用

ios - 使用表格 View

ios - Touchsbegan 不适用于第二个 View Controller 的 subview

iphone - objective-c : Timer crashes app when turned on a second time

iphone - 如何在 GridView 中显示来自 Web 服务的图像

ios - Storyboard xcode 9.2 示例中需要恢复 id

ios - 在 MainContext 和 PrivateContext 上的异步 block 崩溃上使用 -com.apple.CoreData.ConcurrencyDebug 1

iPhone Dev - 如何使 UITableView 的确切高度适合其中的所有单元格

iphone - didUpdateLocations 会在稳定手机上调用还是现在调用?