【发布时间】:2016-02-29 13:53:42
【问题描述】:
我有一个UITextField,我在rightView 中添加了一张图片。我已向此 rightView 添加了一个手势,我希望在禁用 UITextField 时使其工作,因为此视图仅在未编辑时显示。
- leftView 只是一个空白区域;
- rightView 只有图像。
这是用于将外观应用到UITextField 并将图像应用到rightView 的代码:
- (void)applyAppearanceToTextField:(UITextField *)textField withRoundingCorner:(UIRectCorner)corner withIcon:(NSString *)icon {
CAShapeLayer *shape = [[CAShapeLayer alloc] initWithLayer:textField.layer.mask];
UIBezierPath *shadow = [UIBezierPath bezierPathWithRoundedRect:textField.bounds byRoundingCorners:corner cornerRadii:CGSizeMake(5, 5)];
shape.path = shadow.CGPath;
textField.layer.mask = shape;
// Apply space to the left as a padding
[textField setLeftView:[[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, textField.bounds.size.height)]];
[textField setLeftViewMode:UITextFieldViewModeAlways];
// Add the icon image to the right view
CGFloat height = textField.bounds.size.height;
UIImage *image = [UIImage imageWithIcon:icon backgroundColor:[UIColor clearColor] iconColor:[UIColor grayColor] andSize:CGSizeMake(height / 2, height / 2)];
image = [UIImage imageWithCGImage:image.CGImage scale:image.scale orientation:UIImageOrientationUpMirrored];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[imageView setBounds:CGRectMake(5, 0, image.size.width, image.size.width)];
[imageView setUserInteractionEnabled:YES];
[textField setRightView:imageView];
[textField setRightViewMode:UITextFieldViewModeUnlessEditing];
[textField.rightView setExclusiveTouch:YES];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleIconTap:)];
[textField.rightView addGestureRecognizer:tapGesture];
}
- (void)handleIconTap:(UITapGestureRecognizer *)gesture {
NSLog(@"handleIconTap");
}
在viewDidLoad 中,我检查该字段是否已填写,因此该字段被禁用。当UITextField被禁用时,如何在leftView/rightView中启用点击?
【问题讨论】:
-
嗨,请放一些代码或图像以便更好地理解...
-
@ilesh 更详细地编辑了问题。
标签: ios objective-c uitextfield uitapgesturerecognizer