使用用户输入值在文本字段中添加默认文本

时间:2017-07-29 12:23:57

标签: ios swift xcode uitextfield

我有一个textfield.Where用户将输入一些名称。但我想在我的文本字段中保留一些默认文本,后跟用户输入的值。

如下所示:

;  (println 1)
;  (println 1 also won't break

因此,usertypetextwillcomehere ##samsn 将是默认文本必须在textfield中。 ##samsn将在文本字段中显示用户输入的值....如果用户输入2个字母,则必须在该两个字母旁边显示。如下所示:

usertypetextwillcomehere

它应该遵循用户类型的价值。任何想法都会有所帮助

2 个答案:

答案 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更新标签的文本。如果你得到的字体和大小完全相同,它就会看起来像是文本字段的一部分。