繁体   English   中英

从UITextField中的UITextField中删除Tap手势

[英]Remove Tap gesture from UITextField inside a UITableViewCell

基本上我想要实现的是在自定义UITableViewCell中有一个UITextField,而这个文本字段应该只在长按时触发。 因此,如果用户只在文本字段上点击一次,则单元格应该触发其委托方法didSelectRow。

到目前为止,我在文本字段上添加了一个长按,并删除了所有其他手势。 因此,当我长按它时,我的文本字段正确触发。 但问题是,当我只是点击文本字段时,单元格不会被触发,并且不会调用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;
}

我用UIGestureRecognizerDelegate尝试了不同的东西,但似乎都没有用:(。

任何想法赞赏! 谢谢 !

你应该能够通过在细胞本身上放置激活剂来实现这一目标。 因为您的UITextField仍在接受用户输入,所以它将阻止底层单元接收触摸。

你可以通过将UILongPressGestureRecognizer添加到CustomCell对象并设置来解决这个问题:

cell.nameTextField.userInteractionEnabled = NO;

我终于找到了一个有效的解决方案。

我在UITextField的顶部添加了透明视图,并在此视图中添加了长按识别器。 通过这种方式,点击手势“透过”透明视图,我的单元格被正确选择:-)

不管怎样,谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM