gpt4 book ai didi

iphone - touchesBegan 没有响应

转载 作者:搜寻专家 更新时间:2023-10-30 20:21:34 26 4
gpt4 key购买 nike

我想使用 touchesBegan 方法来了解用户何时在我的 TableView 中的 UITextField 之外点击。

我有一个包含 TableView 的 UIView,我有以下方法:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

NSLog(@"See a tap gesture");
UITouch *touch = [touches anyObject];
if(touch.phase==UITouchPhaseBegan){
//find first response view
for (UIView *view in [self.view subviews]) {
if ([view isFirstResponder]) {
[view resignFirstResponder];
break;
}
}
}


[super touchesBegan:touches withEvent:event];

我的 self.view 和我的 self.tableView 都将 userInteractionEnabled 设置为 YES,但由于某种原因,从未触发 touchesBegan。有什么想法吗?

最佳答案

如果您的 UIView 包含您的 UITableView,那么 TableView 位于响应链的顶部,触摸事件不会进入您的 View 。但可能有更好的方法来做到这一点。你在追求什么?

更新

实现 UITextFieldDeletatetextFieldShouldReturn: 方法来拦截“返回”的按下:

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}

此外,一个 UITableViewDelegate 是一个 UIScrollViewDelegate,因此您可以 Hook 这些方法以确定用户何时与 TableView 交互。

一般来说,我认为您不必担心在用户触摸键盘外部时立即关闭键盘,尤其是当您在同一屏幕上输入其他文本时。

摩尔

好吧,很公平,但是当您通过复合透明 View 拦截触摸事件时,事情开始变得复杂(这些也会变得昂贵),等等。而且您永远不知道将来会出现什么影响,不仅对用户而且对您这个程序员,当您将来想要升级应用程序时。

为什么不保持简单?只是一个“完成”UIBarButtonItem,或者在键盘/选择器 ala Mobile Safari 上向上滑动的一点半透明 UIToolbar 怎么样?这些解决方案是用户可以接受的,最终可以让他的生活更轻松。通过将工件和功能分离到模块化单元中,它们无疑使开发变得更容易。

最后一点

使用 UITapGestureRecognizer 我认为在您的情况下很难正确处理。我担心您添加到表格 View 的任何点击识别器都会阻止诸如行选择或将控件移动到另一个 UI 元素(文本字段、开关等)之类的事情。

关于iphone - touchesBegan 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586865/

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