Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从UITableViewCell内的UITextField中删除点击手势_Ios_Objective C_Iphone_Uitableview - Fatal编程技术网

Ios 从UITableViewCell内的UITextField中删除点击手势

Ios 从UITableViewCell内的UITextField中删除点击手势,ios,objective-c,iphone,uitableview,Ios,Objective C,Iphone,Uitableview,基本上,我想要实现的是在自定义UITableViewCell中有一个UITextField,而这个textfield应该只在长按时触发。因此,如果用户只需点击textfield一次,单元格就会触发其委托方法didSelectRow 到目前为止,我在文本字段上加了一个长按,并删除了所有其他手势。因此,当我长按文本字段时,它会正确触发。但问题是,当我只是点击textfield时,单元格不会被触发,didSelectRow方法也不会被调用。如果我点击文本字段外部,该方法将正确调用ofc 这是我的密码:

基本上,我想要实现的是在自定义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被触发时,我只需要告诉我的文本字段成为第一响应者,就可以了。请告诉我这是怎么回事?啊,我的错,对不起。我没有正确理解这个问题。