1

我有一個UITextField用於格式化電話號碼。我試圖添加一個"+" sign前綴作爲第一個字符,不能刪除。格式化&檢查工作正常,但有一個前綴似乎並不工作。 「 標誌。我知道這是因爲shouldChangeCharactersInRange在我鍵入第一個數字之前不會被調用,但爲什麼makePrefix()函數不添加前綴?將前綴字符添加到UITextField

所以,我被困在其中「的用戶點擊了的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) 
} 

回答

2

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

檢查文本是否以「+」開頭,如果沒有調用makePrefix()。