奇怪的行为 - 选择行触摸对 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 没有响应的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的行为 - 行不会重新选择,直到三个水龙头

UIPopoverController 奇怪的行为

UIScrollView:内部视图不合适,奇怪的行为,视图在触摸时重新恢复

jquery $.on() 和使用 date() 时处理奇怪行为的触摸事件

UIView ExclusiveTouch:UIBarButtonItem 的奇怪行为

获取 SQL 执行计划。 PL/SQL Developer = 奇怪的行为。 SQL*Plus = 未选择任何行