我有一個自定義的UITextField,我試圖'格式化輸入到電話號碼'作爲用戶類型。我想達到什麼:格式化UITextField的文本作爲電話號碼作爲用戶類型
添加上的UITextField一個前綴
+
標誌作爲第一個字符,不能刪除。格式二者String變量和的UITextField在電話號碼很好(49 291 12345678),而不是普通的數字在(4929112345678)作爲用戶類型的格式的文本。
我研究發現,沒有內置的方法。我還找到了一個易於使用的庫,名爲PhoneNumberKit,用於將輸入字符串格式化爲電話號碼。在遊樂場,它就像..
let rawNumberArray = "+4929112345678"
let phoneNumbers = PartialFormatter().formatPartial(rawNumberArray)
print(phoneNumbers) // "+49 291 12345678"
裸記住,圖書館需要字符串有+
的第一個字符格式正確。
我試着在我的UITextField上實現它。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
if textField == myTextField {
let candidateString : NSString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
let updatedTextString : NSString = PartialFormatter().formatPartial(candidateString as String)
self.formattedPhoneNumber(updatedTextString, textField: textField)
}
return true
}
func formattedPhoneNumber(updatedTextString: NSString, textField: UITextField) {
// textField.text = "+\(updatedTextString as String)"
print(updatedTextString)
}
如果我繼續textField.text = "+\(updatedTextString as String)"
評論,print(updatedTextString)
打印格式良好的控制檯上的字符串,但裏面的UITextField的UI,它只是顯示簡單的,非結構化的號碼,如「4929112345678」
如果我取消它,事情開始變得奇怪,UITextField在UI中開始呈現重複的字符,但控制檯日誌打印也變得非常奇怪。我也嘗試過清空textField.text = ""
,但也沒有工作。
我在做什麼錯?我錯過了什麼,不讓它工作正常?我相信這與我有關,而不是圖書館本身。
此外,如果您有任何其他建議(或庫)可以幫助我解決此問題,請分享它們。
,你必須從'shouldChangeCharactersInRange'返回'FALSE'。 – rmaddy
我試着將'return true'改爲'return false'。有'textField.text =「+ \(updatedTextString作爲字符串)」'不幸的是每次我點擊'刪除'時都會加上'+'符號。我的方法存在邏輯錯誤,但我無法弄清楚。我很感激,如果你可以添加一個答案,所以我可以嘗試 – senty