UITapGestureRecognizer没有做任何事情

Chr*_*rts 10 iphone uigesturerecognizer ios

我有一个应用程序,显示一个文本页面,能够点击一个按钮或在视图中滑动,以推进或撤退各种页面.容器视图附加了两个UISwipeGestureRecognizer,用于向左滑动和向右滑动.这些手势没问题.但现在我正在尝试将UITapGestureRecognizer添加到另一个视图中,提供类似于iBooks或Kindle应用程序的功能,点击左侧返回,右侧继续前进.我所做的一切都无法触发.即使我将手势放在最顶层的视图上并禁用其他手势,也不会暗示它会被触发.

视图控制器实现了UIGestureRecognizerDelegate,但我不需要实现委托方法.我确实尝试过实现shouldReceiveTouch:没有成功.

这是我创建和附加手势识别器的代码片段:

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureTurnPage:)];
[self.view addGestureRecognizer:recognizer];
[recognizer release];
Run Code Online (Sandbox Code Playgroud)

Bog*_*dan 25

在您添加手势识别器的视图上尝试此操作:

view.userInteractionEnabled = YES;
Run Code Online (Sandbox Code Playgroud)

  • 我被困在这几个小时.谢谢!!!实际上,您也可以在故事板中设置启用的用户交互.但这对我来说是个问题 (2认同)
  • Swift 3:view.isUserInteractionEnabled = true.另外值得注意的是,如果要向子视图添加手势识别器,则可能需要在父视图上启用用户交互. (2认同)

Pen*_*One 7

你提到你已经尝试过这个,但以防万一再次通过它.

尝试<UIGestureRecognizerDelegate>在标题中使用委托,然后设置委托:

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureTurnPage:)];
[self.view addGestureRecognizer:recognizer];
recognizer.delegate = self;
[recognizer release];
Run Code Online (Sandbox Code Playgroud)

然后实现此方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch {
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

然后使用调试器或NSLog投入上述方法,并tapGestureTurnPage:查看是否正在调用这些方法.