2011-12-19 4 views
1

私はいくつかのUITextFieldUITextViewのスクリーンを持っています。UITextView textViewShouldEndEditing/textViewDidEndEditingが呼び出されない

UITextFieldの編集を終了する方法は、キーボードの[完了]キーをタップし、UITextViewの「公式」の方法は外部の完了ボタンに触れることです - 他のコントロールに触れるだけで、ユーザーが別のテキストフィールドまたはテキストビューに切り替えるのを防ぐことはできません。

編集中の現在のコントロールがUITextFieldの場合、これは問題なく機能します。ユーザーが第2のコントロールに触れると、現在のテキストフィールドにTextFieldDidEndEditing:が呼び出され、そのフィールドのデータを処理できます。

ただし、現在のコントロールがUITextViewの場合、ユーザーが別のコントロールに触れると、textViewShouldEndEditingtextViewDidEndEditingも呼び出されません。それらを呼び出させる唯一の方法は、第2のコントロールがタッチされたときに明示的にResignFirstResponderを実行することですが、これによりキーボードが解除されるため、新しいタッチは実質的に無視されます(ユーザーは新しいフィールドに再度触れてレジュームする必要があります編集)。

UITextViewは、別のコントロールに触れているときにUITextFieldのように振る舞いますか?

+0

は私のために働きます。 textViewのデリゲートを設定してもよろしいですか?それはあなたがおそらく持っているresignFirstResponderを手動で使用するときに機能するかどうかです。 –

+0

はい、確かに... :) –

答えて

0

のtextViewShouldEndEditingおよびtextViewDidEndEditingメソッドでは、if-else節が追加されます。

- (void)textViewDidBeginEditing:(UITextView *)textView 
{ 
    if (textView = (your text view property) 
    { 
     //do something 
    } 
} 
関連する問題