【问题标题】:Add default text in textfield with follow of user typing value在文本字段中添加默认文本,并跟随用户输入值
【发布时间】:2017-07-29 21:16:30
【问题描述】:

我有一个文本字段。用户将在其中输入一些名称。但我想在我的文本字段中保留一些默认文本,然后是用户键入的值。

如下:

usertypetextwillcomehere ##samsn

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

he ##samsn

h ##samsn

seconstextwillgere ##samsn

它应该跟随任何用户类型的值。任何有帮助的想法都将感谢

【问题讨论】:

  • 我的回答对你有帮助吗?

标签: ios swift xcode uitextfield


【解决方案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()
        }
    }
}

希望对你有帮助

【讨论】:

  • 抱歉重播晚了......不,实际上我正在为我的文本字段使用其他类。那么我该如何使用这个文本字段类来挖掘
  • @doubtman 我认为您可以使用相同的方式,但将自定义 TextField 子类化,请尝试让我知道
  • 您好这里的任何解决方案...stackoverflow.com/questions/45605670/…
【解决方案2】:

您可以在文本字段后面放置一个标签,并使文本字段的背景透明。当文本字段值更新时,您可以在末尾添加 ##samsn 来更新标签的文本。如果你得到完全相同的字体和大小,它看起来就像是文本字段的一部分。

【讨论】:

  • 但它必须跟随我在文本字段中输入的值知道...比如说如果我输入超过 20 个字母,它必须是我输入的最后一个值,然后是 ##samsn
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
  • 2013-08-16
  • 2015-08-01
相关资源
最近更新 更多