左视图中的 UITextField 和点击手势

Posted

技术标签:

【中文标题】左视图中的 UITextField 和点击手势【英文标题】:UITextField and tap gesture in leftView 【发布时间】:2015-06-01 14:03:06 【问题描述】:

我在 textField 的 leftView 上有一个图标,我想向它添加点击手势。这是我的代码:

if (!textField.leftView)
    UIImageView *infoImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 18)];
    infoImage.image = [UIImage imageNamed:@"info"];
    infoImage.contentMode = UIViewContentModeCenter;
    textField.leftView = infoImage;
    textField.leftViewMode = UITextFieldViewModeAlways;
    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showErrorMessage:)];
    tapRecognizer.numberOfTapsRequired = 1;
    [infoImage addGestureRecognizer:tapRecognizer];

当用户点击左视图上的图像没有发生任何事情并且showErrorMessage没有被调用时的问题。

更新 通过在 infoImage 上启用 userInteraction 解决了点击问题。 但现在我在我的节目errorMessage 的第二行得到[UITapGestureRecognizer tag]: unrecognized selector sent to instance

-(void)showErrorMessage:(id)sender
UIImageView *icon = (UIImageView *)sender;
NSString *key = [@(icon.tag) stringValue];
NSLog(@"%@", [_errorDictionary objectForKey:key]);

【问题讨论】:

infoImage. userInteractionEnabled = YES? Tap detection not working on UIImageView的可能重复 发件人不是imageView,是tapGestureRecognizer... @Misha 我这样设置标签infoImage.tag = textField.tag; 问题是埃米利奥提到的 【参考方案1】:

缺少infoImage.userInteractionEnabled = YES;

【讨论】:

【参考方案2】:

您必须将图像的属性 userInteractionEnabled 设置为 TRUE

【讨论】:

以上是关于左视图中的 UITextField 和点击手势的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 将点击手势添加到 UITextField

当 pickerView 出现时 UITextField 中的文本向左移动

ViewDidLoad 中 UITextField 的圆角只影响左角

禁用 UITextField 时如何在 leftView/rightView 中启用点击?

如何在父视图中禁用点击手势?

自定义表格视图单元格中的 UITextField。点击单元格/文本字段时显示选择器视图