Ios 从UITableViewCell内的UITextField中删除点击手势
基本上,我想要实现的是在自定义UITableViewCell中有一个UITextField,而这个textfield应该只在长按时触发。因此,如果用户只需点击textfield一次,单元格就会触发其委托方法didSelectRow 到目前为止,我在文本字段上加了一个长按,并删除了所有其他手势。因此,当我长按文本字段时,它会正确触发。但问题是,当我只是点击textfield时,单元格不会被触发,didSelectRow方法也不会被调用。如果我点击文本字段外部,该方法将正确调用ofc 这是我的密码:Ios 从UITableViewCell内的UITextField中删除点击手势,ios,objective-c,iphone,uitableview,Ios,Objective C,Iphone,Uitableview,基本上,我想要实现的是在自定义UITableViewCell中有一个UITextField,而这个textfield应该只在长按时触发。因此,如果用户只需点击textfield一次,单元格就会触发其委托方法didSelectRow 到目前为止,我在文本字段上加了一个长按,并删除了所有其他手势。因此,当我长按文本字段时,它会正确触发。但问题是,当我只是点击textfield时,单元格不会被触发,didSelectRow方法也不会被调用。如果我点击文本字段外部,该方法将正确调用ofc 这是我的密码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.nameTextField.gestureRecognizers = nil;
UILongPressGestureRecognizer *longPressTextField = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleCellTextFieldLongPress:)];
[cell.nameTextField addGestureRecognizer:longPressTextField];
return cell;
}
我用UIGestureRecognitzerDelegate尝试了不同的方法,但似乎都不起作用:(
感谢您的任何想法!Thx!您应该能够通过在电池上安装激活器来实现这一点。因为您的
UITextField
仍在接受用户输入,它将阻止底层电池接收触摸
您可以通过将uilongpressurerecognizer
添加到CustomCell
对象和设置来解决此问题:
cell.nameTextField.userInteractionEnabled = NO;
我终于找到了一个有效的解决办法 我在UITextField的顶部添加了一个透明视图,并在该视图上添加了长按识别器。通过这种方式,点击手势“穿过”透明视图,我的单元格被正确选择:-)
反正是Thx 如果它起作用,为什么会错呢?伊恩的回答不符合我的需要。我不想在整个手机上使用UILongPressGestureRecognitor,我只想在我的UIExtField框架上使用它。当UILongPressGestureRecognizer被触发时,我只需要告诉我的文本字段成为第一响应者,就可以了。请告诉我这是怎么回事?啊,我的错,对不起。我没有正确理解这个问题。