- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 View Controller 中的以下代码在 touch.view
调用中导致 EXC_BAD_ACCESS
:
- (BOOL)handleSingleTap:(UITapGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIControl class]]) { // <<<< EXC_BAD_ACCESS HERE
// we touched a button, slider, or other UIControl
return NO; // ignore the touch
}
[self.view endEditing:YES]; // dismiss the keyboard
return YES; // handle the touch
}
touch
似乎是一个僵尸。具体来说,touch
被设置为一个地址,调试器认为这是一个 UITouch
指针,但它没有任何属性:
这在 iOS 4.x 中没有发生。那么 iOS 6 错误还是我的错?
手势识别器设置如下(在 ViewController 中):
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:shouldReceiveTouch:)];
[tapRecognizer setDelegate:self];
[tapRecognizer setNumberOfTapsRequired:1];
[tapRecognizer setNumberOfTouchesRequired:1];
tapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
更新/解决方案:
感谢 Rob 指出我的用户错误。不仅如此,我实际上并不需要 TapRecognizer,因为我只想知道发生了触摸。
下面是在 UIControl 以外的任何地方通过触摸关闭屏幕键盘的正确代码:
在 ViewController 的 viewDidLoad
中:
UIGestureRecognizer *myRecognizer = [[UIGestureRecognizer alloc] init];
[myRecognizer setDelegate:self];
myRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:myRecognizer];
[myRecognizer release];
和:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIControl class]]) {
// we touched a button, slider, or other UIControl
return NO; // ignore the touch
}
[self.view endEditing:YES]; // dismiss the keyboard
return YES; // handle the touch
最佳答案
您正在使用方法 handleSingleTap:shouldReceiveTouch:
,其签名不符合允许的签名。查看Overview UIGestureRecognizer 类引用部分。 它应该只有一个参数,即手势识别器。
我认为您可能将处理程序与 UIGestureRecognizerDelegate
协议(protocol)方法混淆了 gestureRecognizer:shouldReceiveTouch:
.
关于UITapGestureRecognizer gestureRecognizer :shouldReceiveTouch:? 中的 iOS6 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037158/
我试图从我的 TapGestureRecognizer 中排除 subview 。它已在sotryboard中创建,委托(delegate)已连接到 Controller 。 在我的 ViewCont
我想向 R4PageViewController 添加一些 ui,例如按钮和 ListView ,但不知道这样做的正确方法,我决定尝试使用 shouldReceiveTouch,但没有成功 这是我的手
我在网上看到很多关于它的问题,尤其是在 StackOverflow 上。我测试了许多给定的答案,但就我而言,没有任何效果。 我的类实现协议(protocol)UIGestureRecognizerDe
我有以下代码: - (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)to
gestureRecognizer:shouldReceive Touch: 方法未被调用。我设置不当吗? -(id) init { UILongPressGestureRecognizer *tou
我试图通过以下方式忽略 UITapGestureRecognizer 在 UITableView 上的点击: - (BOOL)gestureRecognizer:(UIGestureRecognize
我的 View Controller 中的以下代码在 touch.view 调用中导致 EXC_BAD_ACCESS: - (BOOL)handleSingleTap:(UITapGestureRec
我有一个相当简单的 UITableView,它可以在堆栈上推送一个新 View 。新 View 有一个像这样初始化的 gestureRecognizer @synthesize swipeGestur
我是一名优秀的程序员,十分优秀!