ios - 为什么在 shouldReceiveTouch 中我的手势识别器总是报告在同一位置被点击?

标签 ios objective-c uigesturerecognizer uitapgesturerecognizer

我有以下代码:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch {
    NSLog(@"%@", NSStringFromCGPoint([recognizer locationInView:self.view]));
    ...

但是,每次点击时,我都会得到 {0, -64}。无论我点击哪里。我做错了什么?

最佳答案

我认为这是预期的行为,因为“在手势识别器上调用 touchesBegan:withEvent: 之前调用此方法以进行新触摸”。所以,我认为这意味着识别器还不知道它的位置。要获取位置,请改用提供的触摸参数:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch {
    NSLog(@"%@", NSStringFromCGPoint([touch locationInView:self.view]));
    ...

关于ios - 为什么在 shouldReceiveTouch 中我的手势识别器总是报告在同一位置被点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935825/

相关文章:

ios - 单击 uibutton 动态重新创建 uitableview 部分

objective-c - NScheckboxcell 中心的复选框

ios - 使用 UIGestureRecognizer 传递的奇怪的 ios 触摸事件

ios - 在特征上设置通知会导致无效句柄错误

swift - isUserInteractionEnabled = false 仍然允许双击手势

ios - UIPageViewController 手势识别器

ios - Swift Keyboard Extension更新NSUserDefaults

ios - SwiftUI填充Vstack剩余空间

ios - 如何让一个按钮在 iOS 的每个屏幕上做同样的事情?

ios - 说话停不下来