UITextField to Enter Amount - 如何在提供条件的情况下自定义 UITextField?
Posted
技术标签:
【中文标题】UITextField to Enter Amount - 如何在提供条件的情况下自定义 UITextField?【英文标题】:UITextField to Enter Amount - how can I customise UITextField as in the image with conditions provided? 【发布时间】:2014-11-20 12:29:56 【问题描述】:如何在以下条件下实现UITextField
,如图所示,
-
$ 符号应位于左侧。
$ 符号应仅在开始编辑或已输入数字时出现。
应该无法编辑、删除和聚焦 $ 符号。
【问题讨论】:
您可以使用 $ 符号的图像并将其分配给 UITextField.leftView @Jonathan:是的 :)。这是一种解决方案或很好的解决方案,要使用 leftView 而不是图像,需要使用 UILabel 来代替……ryt ? 啊,是的。它是一个 UIView,因此您可以为它分配一个 UILabel。好主意...此外,您很可能只在 textView DidEndEditing 时隐藏 leftView 并在 textView DidBeginEditing 时显示它。 是的。我做到了,并且正在按要求工作。 【参考方案1】:首先,在您的 .h 中实现 UITextFieldDelegate
@interface ViewController : UIViewController <UITextFieldDelegate>
接下来,将UITextField
的委托设置为您的ViewController
。然后在文本字段成为第一响应者时使用textFieldShouldBeginEditing
添加“$”。
@property (strong, nonatomic) IBOutlet UITextField *dollarTextField;
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
// if editing the dollarTextField, then insert the $
if (textField == _dollarTextField)
// if the textField is blank, then add the $
if (textField.text.length == 0)
textField.text = @"$";
return YES;
最后,实现shouldChangeCharactersInRange
以将$ 保留在textField
中。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
// if editing the dollarTextField
if (_dollarTextField)
// set what the new string will be
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
textField.text = newString;
// if the new string is blank, then set it to the $
if (newString.length == 0)
textField.text = @"$";
return NO;
return YES;
【讨论】:
1.如果已输入金额,textFieldShouldBeginEditing 将仅用“$”替换整个文本,2。它将能够聚焦或删除“$”。 Thx :)...在乔纳森的评论之上,将是一种解决方案或简单的解决方案...我认为..请检查一下... 我修复了我发布的代码,因此如果已经有文本,它不会用“$”替换整个文本。 @Jonathan 确实提出了一个很好的替代方案,这将是更少的代码。这取决于您的需求。 好吧,罗恩……我已经使用了那个解决方案,但根据他的建议稍作修改……使用 UILabel 代替图像。以上是关于UITextField to Enter Amount - 如何在提供条件的情况下自定义 UITextField?的主要内容,如果未能解决你的问题,请参考以下文章
text [setBottomBorder to UITextField] #ios #UI #UITextField
UITextField 占位符文本替换为 Hold to Dictate 消息
UITextField becomeFirstResponder 在 UIControlEventEditingDidEndOnExit 中不起作用