我尝试使用UIControlEventTouchDown
事件调用针对简单UIButton
的操作,该UIViewController
位于UINavigationController
的左下角(使用- (IBAction)touchUpInside:(id)sender {
NSLog(@"touchUpInside");
}
- (IBAction)touchDown:(id)sender {
NSLog(@"touchDown");
}
推送)。
我创建了故事板,用按钮按下视图控制器。
并为按钮添加了跟踪触摸事件的操作。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self touchesBegan:touches withEvent:event];
NSLog(@"touchesBegan");
}
并且还添加了touchesBegan来跟踪它是否被调用。
{{1}}
现在,通过这样的设置,我有奇怪的行为。左侧(宽度= 13)和左下角(宽度= 50,高度= 50)有一些触摸区域,在触摸时有不同的响应。如果你将触摸这些区域 - 触摸按钮不会被触摸,就像正常行为一样。但只有在修饰后才能调用它。
我相信左侧区域在UINavigationControoler中用于推送UIViewController的交互式弹出窗口。所以这里有两个问题。
答案 0 :(得分:2)
我遇到了同样的问题,我通过禁用"滑动返回"来修复它。 (技术上称为" 交互式流行手势"在UIKit中)功能在iOS 7中引入。
禁用交互式弹出手势的示例代码:
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
我认为这是由于交互式弹出手势识别器在屏幕左边缘附近消耗/延迟触摸事件(因为从左边缘开始向后滑动)导致触摸事件无法传递到位于视图左边缘附近的控件。