UITextField 和左视图中的点击手势
UITextField and tap gesture in leftView
我在 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 解决了点击问题。
但是现在我在 Show 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;
您必须将图像的 属性 userInteractionEnabled 设置为 TRUE
我在 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 解决了点击问题。
但是现在我在 Show 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;
您必须将图像的 属性 userInteractionEnabled 设置为 TRUE