2016-04-02 22 views
3

私はこのコードを使用しましたが、問題は、texfieldが空である(インデックスが範囲外である) 「 - 」私は何ができるかについてフォーマットは米国の電話番号にフォーマット(###)で入力### - ####

任意のアイデアを

をユーザーがPHONENUMBERを変更し、[保存]ボタンをヒットしていない場合や他の問題は、それが「((」と、再びコードを実行して挿入します。?ユーザーからの入力中に
var stringts: NSMutableString = self.ts.text 
stringts.insertString("(", atIndex: 0) 
stringts.insertString(")", atIndex: 4) 
stringts.insertString("-", atIndex: 5) 
stringts.insertString("-", atIndex: 9) 
self.ts.text = stringts 
+0

入力中にテキストを書式設定していますか? –

+0

「保存」をクリックすると、その機能が欲しいですが、コードがテキストフィールドをフォーマットします –

+0

ちょっと待ってください! –

答えて

6

あなたは入力を検証することができますそうするを使用します。

入力を検証するために

機能:

func checkEnglishPhoneNumberFormat(string: String?, str: String?) -> Bool{ 

    if string == ""{ //BackSpace 

     return true 

    }else if str!.characters.count < 3{ 

     if str!.characters.count == 1{ 

      txtFieldPhoneNumber.text = "(" 
     } 

    }else if str!.characters.count == 5{ 

     txtFieldPhoneNumber.text = txtFieldPhoneNumber.text! + ") " 

    }else if str!.characters.count == 10{ 

     txtFieldPhoneNumber.text = txtFieldPhoneNumber.text! + "-" 

    }else if str!.characters.count > 14{ 

     return false 
    } 

    return true 
} 

は、この情報がお役に立てば幸い!

+0

どの機能を呼び出す必要がありますか?あなたはどのようにそれを呼び出すだろうかの例を挙げることができますか?ありがとうございました! –

+0

@RayKingあなたの 'UITextField'に' delegate'を与えるだけです。すなわち: 'yourTextFieldOutlet.delegate = self' –

+0

私はこのコードにバグがあります。私の他のtextFieldsは、私が電話番号を入力しているときに値を変更しています。彼らは委任するように設定され、このコードの影響を受けます。 –

関連する問題