我有用于货币选择的UITextField,我想将其文本的一部分设置为不可编辑(在文本$ 9,99中,用户只能替换9,99)。任何想法如何做到这一点?
答案 0 :(得分:0)
不可能部分编辑,我认为您应该在货币符号和金额之间分开。假设您为货币符号创建了新的UIlabel
或UItextfield
,然后也将货币金额也设置为新的textfield
。
如果使用两个textfields
,则可以设置不能用yourTextField.enabled = false
或yourTextField.isUserInteractionEnabled = false
答案 1 :(得分:0)
无法完成,因此您只能使用货币符号的UIlabel,并且该符号会随着本地化而自动更改
答案 2 :(得分:0)
您可能会对此有所不同。使用单独的UILabel或将带有UILable的LeftView添加为$符号的TexFields leftView。而且,如果您不想这样做,可以使用委托方法中的方法。 Whic如下所示:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let text = (textField.text! as NSString).replacingCharacters(in: range, with: string)
return text.count > 0
}
我们在这里所做的是在编辑时检查文本字段中的文本,并获取文本字符数。如果字符> 0,则可以编辑textField,但如果在文本字段中仅保留$号,则我们将予以保护。
您可能想要检查要执行的文本字段,因为您可能有更多的文本字段,并且所有人都会使用它,因此仅检查该文本字段
答案 3 :(得分:0)
您需要在用户开始编辑时设置文本字段委托,并且字符计数== 0,然后在$符号后附加文本字段
答案 4 :(得分:0)
您可以向文本字段添加状态为“ editingChanged”的目标,例如:
textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
,如果textField的长度小于2(“ $”),只需将此字符串设置为textField.text值
@objc func textFieldDidChange(_ textField: UITextField) {
guard let count = textField.text?.count else {
return
}
if count < "$ ".count
{
textField.text = "$ "
}
}