gpt4 book ai didi

ios - 由于UITapGestureRecognizer无法调用didSelectRowAtIndexPath

转载 作者:行者123 更新时间:2023-12-01 16:41:33 26 4
gpt4 key购买 nike

我正在使用UITapGestureRecognizer结束编辑(因为这是我发现对在没有其他方法(例如十进制小键盘)的输入键盘上结束编辑有用的解决方法)。问题在于,在viewController中,我有一个tableView(该UITableViewDataSourceUITableViewDelegatetableView设置为viewController),并且未触发方法 didSelectRowAtIndexPath

码:

viewDidLoad {
...
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer:tapRecognizer];
...
}


- (void)tap:(UIGestureRecognizer*)gr {
[self.view endEditing:YES];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Help!");
}

我知道 UITapGestureRecognizer正在捕获选择,因为如果我注释如下,则:
viewDidLoad {
...
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
//[self.view addGestureRecognizer:tapRecognizer];
...
}

现在 didSelectRowAtIndexPath 方法终于被触发了。

我需要一些好的做法方面的帮助,以解决“endEditing”或如何将轻击手势转发到 tableView,以便触发 didSelectRowAtIndexPath

谢谢!

最佳答案

我假设您没有一个能占据所有屏幕的tableView,否则您可以关闭didSelectRowAtIndexPath中的键盘。

无论如何,您都可以做,然后将事件传递给下一个响应者(如果存在,则为UITableViewCell类,因此,如果用户点击tableView,则为此类):

- (void)tap:(UIGestureRecognizer*)gr {
[self.view endEditing:YES];

UIResponder *responder = self;
while (responder.nextResponder != nil){
responder = responder.nextResponder;
if ([responder isKindOfClass:[UITableViewCell class]]) {
break;
}
}
[responder touchesBegan:touches withEvent:event];
}

关于ios - 由于UITapGestureRecognizer无法调用didSelectRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23837059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com