簡體   English   中英

向 UITextField 添加前綴字符

[英]Adding Prefixed Character to UITextField

我有一個用於格式化電話號碼的 UITextField。 我試圖添加一個"+" sign前綴作為第一個字符,無法刪除。 格式化和檢查工作正常,但有前綴似乎不起作用..

一開始,它不顯示"+" sign但是,如果我寫一個字符並刪除,它會顯示“+”號。 我知道這是因為在我輸入第一個數字之前不會調用shouldChangeCharactersInRange ,但是為什么makePrefix()函數不添加前綴?

所以我被困在“用戶點擊了 UITextField 但還沒有輸入字符的時候”..

override func viewDidLoad() {
        super.viewDidLoad()

        makePrefix()
}

func makePrefix() {
    let attributedString = NSMutableAttributedString(string: "+")
    attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.whiteColor(), range: NSMakeRange(0,1))
    phoneTextField.attributedText = attributedString
}

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
    if textField == phoneTextField {

        textField.typingAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]

        return false
    }

    return true

}

func formattedPhoneNumber(updatedTextString: NSString, textField: UITextField) {
        textField.text = "\(updatedTextString as String)"
        print(updatedTextString)
}

檢查textFieldDidBeginEditing ,它會在 textField 成為第一響應者時被調用。

檢查文本是否以“+”開頭,如果不是,請調用您的 makePrefix()。

使用leftViewUITextField優雅解決方案

let prefix = UILabel()
prefix.text = "+"
// set font, color etc.
prefix.sizeToFit()

phoneTextField.leftView = prefix
phoneTextField.leftViewMode = .always // or .whileEditing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM