3

viewControllerにtextViewを実装しています。このtextViewは、ユーザーがメモを書き留められるようにこのビューを作成する予定なので、画面全体をカバーします。ただし、ユーザーがテキストビューに触れてキーボードがポップアップすると、問題があるようです。

つまり、テキストビューに触れると、キーボードが画面の半分に表示され、編集テキストの先頭がキーボードの後ろに隠れてしまいます。何かを入力しようとしましたが、編集テキストがキーボードの後ろにあるため、テキストがまったく表示されませんでした。この問題を解決する方法はありますか?

4

2 に答える 2

2

UITextView のデリゲート メソッドを実装ファイルに記述し、yout UITextView のデリゲートを self に設定します。

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
    CGRect rect = txtMessage.frame;
    rect.size.height = 91;// you can set y position according to your convinience
    txtMessage.frame = rect;
    NSLog(@"texView frame is %@",NSStringFromCGRect(textView.frame));

    return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
    return YES;
}


- (void)textViewDidEndEditing:(UITextView *)textView{

    CGRect rect = txtMessage.frame;
    rect.size.height = 276; // set back orignal positions
    txtMessage.frame = rect;
   NSLog(@"EndTextView frame is %@",NSStringFromCGRect(textView.frame));

}
于 2013-01-10T08:31:13.133 に答える
0

キーボードがポップアップしたら、テキスト ビューのサイズを変更する必要があります。まず、キーボードの表示と非表示の通知用にコントローラーを登録する新しいメソッドを定義します。

- (void)registerForKeyboardNotifications
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillBeHidden:)
                                                 name:UIKeyboardWillHideNotification object:nil];
}

次に、メソッド[self registerForKeyBoardNotifications];から呼び出しますviewDidLoad:

その後、コールバック メソッドを実装する必要があります。

ここでkeyboardWasShown:は、キーボードの高さを取得し、その量を textView のフレームの高さから差し引きます (前述のように、テキスト ビューが画面全体に表示されるため、最終的な高さは前の高さからキーボードの高さを引いたものになります)。

- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    CGRect rect = self.textView.frame;
    rect.size.height -= kbSize.height;
}

そしてこれがkeyboardWillBeHidden:

- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
    CGRect rect = self.textView.frame;
    rect.size.height = SCREEN_HEIGHT;
}
于 2013-01-10T08:53:36.180 に答える