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 中不起作用

键盘上按“Enter”键时如何触发功能

跳到下一个 UItextField

如何在不使用键盘选项但使用 UIButton 的情况下创建 Speech To UITextField