UITextField 和左视图中的点击手势

问题描述 投票:0回答:3

我在文本字段的 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 解决了点击问题。
但现在我在节目第二行得到了

[UITapGestureRecognizer tag]: unrecognized selector sent to instance
errorMessage
:

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

}

ios objective-c cocoa-touch
3个回答
6
投票

失踪了

infoImage.userInteractionEnabled = YES;


1
投票

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


0
投票

添加 leftView 和点击手势的完整 Swift 代码:

extension UITextField {
    func setLeftIcon(_ image: UIImage) {
        let iconView = UIImageView(frame:
                                    CGRect(x: 10, y: 5, width: 20, height: 20))
        iconView.image = image
        let iconContainerView: UIView = UIView(frame:
                                                CGRect(x: 20, y: 0, width: 30, height: 30))
        iconContainerView.addSubview(iconView)
        leftView = iconContainerView
        leftViewMode = .always
    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    myTextfield.setLeftIcon(UIImage(named: "imageName"))
    myTextfield.leftView?.addTapGesture(target: self, selector: #selector(methodName))
}
© www.soinside.com 2019 - 2024. All rights reserved.