我有一个目标操作,当按下按钮时,我会验证UITextField
:
// Get the text from the UITextField
NSString *nameStr = _name.text;
_name.rightView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"error.png"]];
[self.view addSubview:_name];
if (nameStr.length == 0)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Invalid Name"
message:@"You must enter a name."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
我的UITextField
被添加到viewDidLoad
中的视图中,如下所示:
[self.view addSubview:_name];
如何显示rightView UIImageView
?
答案 0 :(得分:26)
您必须设置文本字段的rightViewMode
,因为此属性的默认值为 UITextFieldViewModeNever 。
所以你必须从下面设置模式,
UITextFieldViewModeWhileEditing,
UITextFieldViewModeUnlessEditing,
UITextFieldViewModeAlways
答案 1 :(得分:24)
您确定没有错过UITextField
框架吗?你在设置rightViewMode
吗?
这是我刚写的一个例子似乎工作得很好。
UITextField *rightField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 140, 50)];
rightField.backgroundColor = [UIColor redColor]; // For testing purpose
rightField.rightViewMode = UITextFieldViewModeAlways;// Set rightview mode
UIImageView *rightImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Tick_white_color"]];
rightField.rightView = rightImageView; // Set right view as image view
[self.view addSubview:rightField];
这是勾选图像的结果:
答案 2 :(得分:3)
Swift 3中的解决方案:
class CustomText: UITextField {
@IBInspectable var rightImage : UIImage?{
didSet{
self.rightView = UIImageView(image: rightImage)
// select mode -> .never .whileEditing .unlessEditing .always
self.rightViewMode = .always
}
}
}
答案 3 :(得分:3)
对于Swift 3.在UITextField
func setPaddingView(strImgname: String,txtField: UITextField){
let imageView = UIImageView(image: UIImage(named: strImgname))
imageView.frame = CGRect(x: 0, y: 5, width: imageView.image!.size.width , height: imageView.image!.size.height)
let paddingView: UIView = UIView.init(frame: CGRect(x: 0, y: 0, width: 50, height: 30))
paddingView.addSubview(imageView)
txtField.leftViewMode = .always
txtField.leftView = paddingView
}
致电功能
self.setPaddingView(strImgname: "mail", txtField: txtEmail)
答案 4 :(得分:0)
如果您有两个或更多字段,请尝试使用此代码!它为我工作。
dropDownImageViewForTextField1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
dropDownImageViewForTextField1.image = [UIImage imageNamed:@"dropdown_n_icon.png"];
dropDownImageViewForTextField2 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
dropDownImageViewForTextField2.image = [UIImage imageNamed:@"dropdown_n_icon.png"];
txtField1.rightViewMode = UITextFieldViewModeAlways;
txtField1.rightView = dropDownImageViewForTextField1;
txtField2.rightViewMode = UITextFieldViewModeAlways;
txtField2.rightView = dropDownImageViewForTextField2;
检查2件事
txtField.rightViewMode = UITextFieldViewModeAlways
imageView
textField
醇>
答案 5 :(得分:0)
解决方案 _ _ % _ _ % % _ _ _ _ % % _
% % % _ % % % % _ _ % % % _
% % % _ _ % % % _ _ % % % _
% % % _ _ % % % _ _ % % % _
_ % % _ _ % % % _ _ % % % _
_ % % _ _ % % % % _ _ % % %
_ % % % _ % % % _ _ % % % _
_ % % % _ % % % _ % % % % _
% % % _ % % % % _ _ % % % _
_ % % _ _ % % % _ _ % % % _
_ % % _ _ % % % _ _ % % % _
_ % % _ _ _ % % _ _ _ % % _
_ % % _ _ % % % _ _ % % % _
_ % % _ % % % % % % % % % %
% % % % % % % % _ % % % % _
和 Swift 3
首先,您可以为此@IBDesignable
创建@IBDesignable
。
UITextField
注意:您必须为@IBDesignable extension UITextField{
@IBInspectable var setImageName: String {
get{
return ""
}
set{
let imageView: UIImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
imageView.image = UIImage(named: newValue)!
self.rightView = imageView
self.rightViewMode = UITextFieldViewMode.always
}
}
阻止写获取和设置点,因为 Swift 已警告将getter和 setter 一起应用。我们不需要使用get语句,因此返回空字符串。此外,属性名称包含Button但不会混淆,这是一个错误。
然后点击@IBInspactable
上的UITextField
,并将特定图片名称指定给 setAButtonImageName 属性。
然后你会得到以下结果
另一种情况是创建rightView,似乎有右边距
这是截图。
您可以将StoryBoard
用作容器,而不是将UIView
添加到此UIImageView
中。在这里,您必须计算右边距,容器视图的宽度和“UIImageViews”宽度。
UIView