這裏是快速swift 3版本的答案。這個邏輯實現簡單的16位數字信用卡格式與空格。
第1步:創建信用卡文本框的動作
self.txtFieldCreditCardNumber.addTarget(self, action: #selector(didChangeText(textField:)), for: .editingChanged)
第2步:致電文本字段的這種選擇方法,將做格式化
func didChangeText(textField:UITextField)
{
textField.text = modifyCreditCardString(creditCardString: textField.text!)
}
第3步的方法:實施方法「modifyCreditCardString」
func modifyCreditCardString(creditCardString : String) -> String
{
let trimmedString = creditCardString.components(separatedBy: .whitespaces).joined()
let arrOfCharacters = Array(trimmedString.characters)
var modifiedCreditCardString = ""
if(arrOfCharacters.count > 0)
{
for i in 0...arrOfCharacters.count-1
{
modifiedCreditCardString.append(arrOfCharacters[i])
if((i+1) % 4 == 0 && i+1 != arrOfCharacters.count)
{
modifiedCreditCardString.append(" ")
}
}
}
return modifiedCreditCardString
}
第4步:實現UIT的委託extField
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
{
let newLength = textField.text!.characters.count + string.characters.count - range.length
if(textField == txtFieldCreditCardNumber)
{
return newLength <= 19
}
return true
}
就是這樣。謝謝
可能重複[格式化UITextField的信用卡輸入像(xxxx xxxx xxxx xxxx)](http://stackoverflow.com/questions/12083605/formatting-a-uitextfield-for-credit-card-input- like-xxxx-xxxx-xxxx-xxxx) –
它不是重複的,因爲這個答案是用一些冗長的邏輯在Objective-C語言中的。我試圖在標準邏輯中快速執行 – sss
這個問題也有Swift答案。谷歌你的問題標題帶來更好的結果。你可能不得不重寫它們,但是那裏看起來真的很合理。 –