2017-01-30 10 views
0

編集モードに設定できるUITextFieldがあります。UITextFieldが編集を終了した理由を調べるにはどうすればよいですか?

通常、キーボードに「完了」と入力すると編集が終了します。 これはtextFieldDidEndEditing(_ textField: UITextField)と呼ばれ、ハウスキーピングが行われます。

まれに、ユーザーがジオフェンスを入力したというアラートが表示されます。テキストフィールドが編集モードにある場合、警告ビューが最初のレスポンダになるため、最初のレスポンダステータスが辞退し、textFieldDidEndEditing(_ textField: UITextField)も呼び出されます。アラートが終了すると、テキストフィールドの最初のレスポンダステータスが復元されます。

問題:
私は両方のケースを区別する必要があります。
テキストフィールドがあるため、キーボード上の完了の編集を終了した場合、ハウスキーピングが起こるはずです。
アラートが表示されたために編集が終了した場合は、ハウスキーピングを行わないでください。

どのようにして両方のケースを区別できますか?

Iは、デリゲート関数reasoncancelled又はcommittedであってもよい

textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) 

を使用しようとし、両方の両方の場合において、その理由はcommittedあります。

答えて

1

あなたがtextFieldShouldEndEditing、あなたがそうでない場合はtrueを返し、編集モードでTextFieldを残している、falseを返し、ジオフェンスがトリガされたことを識別することができ、およびハウスキーピングは

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool 
{ 
    // assuming you take the same action for all TextFields 
    // assume geoFenceHasBeenTriggered is a class-variable true/false 
    return !geoFenceHasBeenTriggered 
} 
を始めることができると仮定を使用することができます
関連する問題