我有一个很奇怪的问题,我不知道这对细胞的正常行为是否很尴尬,似乎是这样!因此我把它交给可以回答的人,如果有的话请道歉问这个问题是愚蠢的。通常,当我们触摸 TableView 单元格时,会发生什么,它会导航到 View Controller /编码的 Controller 。现在奇怪的是它没有响应选择或触摸。我已检查是否允许在 IB 中选择编辑时进行选择。我已选择它,现在这里的问题是当我触摸表格 View 单元格时它没有响应,而是当我水平滑动它/长按时单元格,它正在导航,对这种奇怪的行为感到非常惊讶!我不明白为什么我需要滑动它才能在 TableView 中选择单元格工作。 TableView 下方的按钮也会发生这种情况!
我搜索了与我的案例类似的问题,但我只找到了一个 question那里建议检查此方法,
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
但我根本没有实现该方法,我实际上拥有的是一个带有多个项目的选项卡栏,其中我有一个名为 AddController 的 Controller ,用于访问多个属性和字符串等。在 Controller 中声明,我是对其进行子类化如下:
@interface ViewController : AddController
现在因为我看到的问题中指定了它,即我给出的链接,为了检查您是否在子类 Controller 页面中复制相同的代码,我谈到了子类化以及我做了什么,希望每个人都能理解!
任何人都可以指导我如何解决这个问题,并使表格 View 单元格响应正常触摸,非常感谢任何帮助!
提前感谢大家:)
最佳答案
经过一些研究后,我很确定是 tableView 上的 UITapGestureRecognizer
导致了您的问题。如果您像我一样在单元格中包含文本字段并使用 UITapGestureRecognizer
关闭键盘,那么这是我的解决方案:
在您实现UITextFieldDelegate
的 View 中
(在我的例子中,我有一个名为 TextFieldCell 的自定义 UITableViewCell
),
将 UITapGestureRecognizer
声明为属性:
@interface TextFieldCell : UITableViewCell <UITextFieldDelegate>
{
UITextField *theTextField;
UITapGestureRecognizer *gestureRecognizer;
}
@property (nonatomic,retain) UITextField *theTextField;
@property (nonatomic,retain) UITapGestureRecognizer *gestureRecognizer;
并在您的 View 中初始化它:
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];
这将彻底解决问题。
关于iphone - 奇怪的行为-选择行触摸没有响应 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939509/