5

下部にaUIPopoverUIScrollView含む内部に aUITextViewがあります。キーボードが表示されると、テキスト ビューの編集が開始されると、ポップオーバーのサイズが変更されます。テキストビューが確実に表示されるようにするには、以下のコードが必要です。

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

    CGRect visRect = textView.frame;
    [self.scrollView scrollRectToVisible:visRect animated:NO];

}

問題は、コードがテキスト ビュー全体を表示しないことです。代わりに、以下に示すように、カーソルの下部までのテキスト ビューのみが表示されます。

ここに画像の説明を入力

テキストビュー全体を表示する/スクロールビューを一番下までスクロールするにはどうすればよいですか? 私はこれを試しました:

CGPoint bottomOffset = CGPointMake(0, self.scrollView.contentSize.height - self.scrollView.bounds.size.height);
[self.scrollView setContentOffset:bottomOffset animated:YES];

この回答で説明されているように、何も機能しません。

さらに、キーボードを所定の位置に移動した後、スクロールビューが表示された位置にスクロールされます。理想的には、キーボードの移動前または移動中にスクロールを実行したいと考えています。

どんな助けでも素晴らしいでしょう。

4

2 に答える 2

1

私は解決策を見つけました:

- (void)keyboardDidShow:(NSNotification *)notification {
NSLog(@"Notification: %s", __PRETTY_FUNCTION__ );
//
CGFloat textviewBottom = CGRectGetMaxY(self.commentsTextView.frame);
CGRect belowTextViewRect = CGRectMake(0, textviewBottom, 350.f, self.scrollView.contentSize.height - textviewBottom);
// NB! This works ONLY: 1) keyboardDidShow 2) Non-animated;
// Does NOT work: 1) animated, 2) keyboardWillShow, 3) textViewDidBeginEditing
[self.scrollView scrollRectToVisible:belowTextViewRect animated:NO];
}
于 2013-05-10T11:46:34.887 に答える