3

テーブルがあり、セルの 1 つに UITextView を保持しています。ユーザーがタップすると、キーボードが表示されます。それを解消するために、さまざまな方法を試していました。私の最初のアプローチは、UITextView のテーブル セルのタップを検出することでしたが、テキスト ビューがそのほとんどを占めているため、適切ではありません。次に、ツールバーにボタンを追加しようとしましたが、ユーザーがボタンを押すたびに、resignFirstResponder でキーボードが消えますが、機能しません。UITextView と同じビューにいる場合にのみ、resignFirstResponder が機能するようです。では、別の観点からキーボードを取り除くにはどうすればよいでしょうか?

ありがとう。

4

5 に答える 5

1

以下のメソッドは、Return キーを使用して UITextView キーボードを閉じます。

Controller で、UITextView の Delegate を次のように self に設定します。

myTextView.delegate=self;

次に、このメソッドを追加します。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
 replacementText:(NSString *)text
{
 // Any new character added is passed in as the "text" parameter
 if ([text isEqualToString:@"\n"]) {
  // Be sure to test for equality using the "isEqualToString" message
  [textView resignFirstResponder];

  // Return FALSE so that the final '\n' character doesn't get added
  return FALSE;
 }
 // For any other character return TRUE so that the text gets added to the view
 return TRUE;
}

これは、Return キーを真の Return キーとして使用していない場合 (たとえば、改行を追加する場合) に機能するはずです。

于 2009-09-21T23:48:05.600 に答える
1

「うまくいかない」とはどういう意味ですか。txtView があなたの UITe4xtView である場合、[txtView rejectFirstResponder] を持つアクションにボタンを関連付けても機能しないということですか? 以前にこのコードを使用したことがありますが、うまくいきます

于 2009-09-21T20:22:56.793 に答える
0

コントロールのサイズや意図を知らなければ、確かな推奨事項を作成するのは少し困難です。ただし、読み取り専用のテキスト ビューを探している場合は、UILabel を検討してみませんか? 大量の読み取り専用テキストが含まれ、豊富な書式設定が必要な場合は、独自の書式設定で UIWebView を検討してください。

もちろん、この答えはまったく不適切である可能性があります。進行中のアプリのスクリーン ショットを表示していただけますか (もちろん、タップされていません)。

于 2009-09-21T20:25:18.947 に答える
0

Interface Builder の [Text View Attributes] ウィンドウで [Editable] オプションのチェックを外してみてください。

これにより、ユーザーが TextView をクリックした場合にキーボードが表示されなくなります

于 2010-07-22T13:24:34.140 に答える
-1

私はそのような問題に次の方法を使用しました

- (BOOL)textFieldShouldReturn: tf_some_text_field {

[tf_some_text_field resignFirstResponder];
[tf_another_text_field_in_the_same_view resignFirstResponder];

return YES;
}

それが役に立てば幸い...

于 2009-09-22T13:34:45.150 に答える