2017-07-09 19 views
0

テキストフィールドの値を変更するボタンがあります。 テキストフィールド内に値が入力されたかのように、textField関数を実行するにはどうすればよいですか?キーボードを使用せずにfuncテキストフィールド(...)を呼び出す

この機能はキーボードを使用して入力する場合にのみ機能します。キーボードを使わずに電話する必要があります。

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    print("some actions her") 

    return true 
} 
+0

自分で 'will/did/should'を含むシステムデリゲートメソッドを呼び出すことは決してありません。 – vadian

答えて

1

あなたはしません。このデリゲートメソッドは、ユーザー型としてのみ呼び出されます。テキストフィールドのtextプロパティを明示的に設定した場合は、決して呼び出されません。そして、これは良いことです。テキストフィールドのtextshouldChangeCharactersInデリゲートメソッド内に設定することは珍しいことではありません。テキストを設定するとデリゲートメソッドが呼び出された場合、無限再帰で終了する可能性があります。

コードで明示的にテキストを設定しているため、デリゲートを呼び出す必要はありません。テキストを目的の値に設定するだけです。

テキストを書式設定するロジックやその他の処理がある場合は、そのロジックを別の関数に入れてから、その関数をshouldChangeCharactersInから、そしてテキストフィールドのテキストを設定する場所から2つの場所から呼び出すことができます。

関連する問題