我有一个textfield.Where用户将输入一些名称。但我想在我的文本字段中保留一些默认文本,后跟用户输入的值。
如下所示:
; (println 1)
; (println 1 also won't break
因此,usertypetextwillcomehere ##samsn
将是默认文本必须在textfield中。 ##samsn
将在文本字段中显示用户输入的值....如果用户输入2个字母,则必须在该两个字母旁边显示。如下所示:
usertypetextwillcomehere
它应该遵循用户类型的价值。任何想法都会有所帮助
答案 0 :(得分:1)
使用此UITextField子类,配置您的后缀,并享受
class PostFixTextField: UITextField {
@IBInspectable var postfix : String = ""
@IBInspectable var removePostfixOnEditing : Bool = true
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib() {
super.awakeFromNib()
self.addTarget(self, action: #selector(textHasChanged), for: .editingDidEnd)
self.addTarget(self, action: #selector(removePostFix), for: .editingDidBegin)
self.addTarget(self, action: #selector(textHasChanged), for: .editingChanged)
}
func textHasChanged()
{
self.removePostFix()
self.addPostFix()
self.setCursorPosition(input: self, position: (self.originalText()?.characters.count)!)
}
private func setCursorPosition(input: UITextField, position: Int) {
let position = input.position(from: input.beginningOfDocument, offset: position)!
input.selectedTextRange = input.textRange(from: position, to: position)
}
func addPostFix()
{
if(self.text != nil)
{
self.text = self.text! + postfix
}
}
func originalText() ->String?{
let prefixRange = NSString(string: (self.attributedText?.string)!).range(of: postfix)
if(prefixRange.location != NSNotFound)
{
return self.text!.replacingOccurrences(of: postfix, with: "")
}
return self.text
}
func removePostFix(){
if(self.removePostfixOnEditing && self.text != nil)
{
self.text = self.originalText()
}
}
}
希望这有助于你
答案 1 :(得分:0)
您可以在文本字段后面添加标签,并使文本字段的背景透明。当文本字段值更新时,您可以使用添加到末尾的## samsn更新标签的文本。如果你得到的字体和大小完全相同,它就会看起来像是文本字段的一部分。