U可以通过在您的视图中添加UITapGestureRecognizer
来处理用户触摸。
例如,如果你不想在你的tableView中启用行选择你打电话self.tableView.allowsSelection = NO;
但是,如果你仍然想检测用户触摸你添加一个UITapGestureRecognizer
到你的tableView(或tableView.superview)。
如果你实施了UIGestureRecognizerDelegate
,你可以有更多的控制,这样你可以检测到,然后选择女巫接触和巫术。
要做到这一点恰好这个代码添加到您的UITableViewController
:
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.allowsSelection = NO;
UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
tgr.delegate = self;
[self.tableView addGestureRecognizer:tgr]; // or [self.view addGestureRecognizer:tgr];
[tgr release];
}
- (void)viewTapped:(UITapGestureRecognizer *)tgr
{
NSLog(@"view tapped");
// remove keyboard
}
//这是可选的,它让ü选择巫倒是接受,比如我在这里检查,如果用户在文本框
抽头
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[UITextField class]]) {
NSLog(@"User tapped on UITextField");
}
return YES; // do whatever u want here
}
之后这个效果很好。唯一看起来很奇怪的是我必须在textField上调用resignFirstResponder,而不是在通常用于清除键盘的视图上。 – ConfusedNoob 2012-08-04 22:49:14
你通常在textField上调用resignFirstResponder而不是视图,但是如果你真的想要某种视图(可能不是),你可以调用[self.view endEditing],这个我相信也会做到这一点...... – Eyal 2012-08-04 23:09:31
如上所述通过@Matt里斯在这个其他线程(http://stackoverflow.com/a/11142038/285853),你需要设置tapGesture.cancelsTouchesInView = NO;如果你希望其他意见像往常一样保持接触。 – Miros 2014-03-17 14:50:07