奇怪的行为 - 选择行触摸对 UITableViewCell 没有响应
Posted
技术标签:
【中文标题】奇怪的行为 - 选择行触摸对 UITableViewCell 没有响应【英文标题】:Strange Behavior-Did select row touch not responding for UITableViewCell 【发布时间】:2012-03-30 08:33:37 【问题描述】:我有一个很奇怪的问题,不知道对细胞的正常行为有没有尴尬,好像是这样!所以我把它交给能回答的人,如果问这个问题的任何事情都是愚蠢的。通常,当我们触摸一个表格视图单元格时,会发生什么情况是它导航到一个视图控制器/一个已编码的控制器。现在奇怪的是它没有响应选择或触摸。我已检查是否在 IB 中选择编辑时允许选择。我已经选择了它,现在这里的扭曲是当我触摸表格视图单元格时它没有响应,而不是当我水平滑动它/当我长按时单元格,它正在导航,对这种奇怪的行为感到非常惊讶!我不明白为什么我需要滑动它才能在表格视图中选择单元格。这也发生在表格视图下方的按钮上!
我已经搜索过和我的情况类似的问题,但我发现只有一个question,建议检查这种方法,
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
但是我根本没有实现那个方法,我实际上是一个带有几个项目的标签栏,我有一个名为 AddController 的控制器,用于访问在控制器中声明的多个属性和字符串等,我是子类化如下:
@interface ViewController : AddController
现在因为它是在我看到的问题中指定的,即我给出的链接,检查你是否在子类控制器页面中复制相同的代码,我谈到了子类化以及我做了什么,希望每个人都理解它!
谁能指导我如何摆脱这个问题,并使表格视图单元格响应正常触摸,非常感谢任何帮助!
提前谢谢大家:)
【问题讨论】:
【参考方案1】:在做了一些研究之后,我很确定是 tableView 上的 UITapGestureRecognizer
导致了你的问题。如果你像我一样在单元格中有文本字段并使用UITapGestureRecognizer
关闭键盘,这是我的解决方案:
在你实现UITextFieldDelegate
的视图中
(在我的情况下,我有一个名为 TextFieldCell 的自定义 UITableViewCell
),
将UITapGestureRecognizer
声明为属性:
@interface TextFieldCell : UITableViewCell <UITextFieldDelegate>
UITextField *theTextField;
UITapGestureRecognizer *gestureRecognizer;
@property (nonatomic,retain) UITextField *theTextField;
@property (nonatomic,retain) UITapGestureRecognizer *gestureRecognizer;
并在你的视图中初始化它:
self.gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeKeyboard:)];
在- (void)textFieldDidBeginEditing:(UITextField *)textField
方法中,使用superView
向上移动到您的tableView 并调用addGestureRecognizer
:
[self.superview.superview addGestureRecognizer:gestureRecognizer];
而在- (void)textFieldDidEndEditing:(UITextField *)textField
中,只需移除手势识别器即可:
[self.superview.superview removeGestureRecognizer:gestureRecognizer];
这将彻底解决问题。
【讨论】:
谢谢 Mr.Hac.Jack,它成功了,这就是问题所在,在您的代码 sn-p 的帮助下解决了它,非常感谢您的关注 :)【参考方案2】:您是否在 tableView 上使用了 UITapGestureRecognizer?我遇到了与您今天完全相同的问题,然后我发现是手势识别器模糊了我通过点击选择行的意图。当我删除它时,tableView 恢复了正常。
希望这会有所帮助。
【讨论】:
是的,我使用了“UITapGestureRecognizer” Mr..Hac Jack。很高兴你推测它是正确的,是的,通过实现你的代码,我能够消除这个问题,非常感谢 :) 很高兴它为您解决了问题。干杯!【参考方案3】:我遇到了同样的问题,并通过在表格视图属性中勾选“启用滚动”来解决它。
我的表格视图不需要滚动,因此它不会以任何其他方式影响应用程序,除了现在我没有在滑动手势后获得第一次无响应的点击。
【讨论】:
以上是关于奇怪的行为 - 选择行触摸对 UITableViewCell 没有响应的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView:内部视图不合适,奇怪的行为,视图在触摸时重新恢复
jquery $.on() 和使用 date() 时处理奇怪行为的触摸事件