2

ユーザーがクリックするとキーボードが上にスライドするテキストフィールドがあります。次に、スクロールビューが調整され、入力内容を読み取ることができます。

私の問題は、それが終わったら、ユーザーが画面をスクロールし続けられるようにしたいということです。これはどのように行うことができますか?

4

3 に答える 3

0

パート1:

スクロール ビューのコンテンツ サイズは、実際には含まれるビューのサイズや位置とは関係ありません。コンテンツ ビューのサイズとスクロール ビューのコンテンツを変更する場合は、2 つの異なるメソッドを呼び出す必要があります。

 CGSize newSize;
 UIScrollView *scrollView;
 // assume self is the content view
 CGRect newFrame = (CGRect){CGPointZero,newSize}; // Assuming you want to start at the     top-left corner of the scroll view. Change CGPointZero as appropriate
  [  scrollView setContentSize:newSize]; // Change scroll view's content size
  [self setFrame:newFrame]; // Change views actual size

パート2:

setNeedsDisplay は、ビュー全体を表示が必要であるとマークします。可視部分のみを表示するには、setNeedsDisplayInRect:visibleRect を使用する必要があります。ビューが左上隅 (フレームの原点が 0) にあり、スクロール ビューでズームが許可されていないと仮定すると、スクロール ビューのコンテンツ オフセットと境界サイズを使用して、表示されている四角形を見つけることができます。

  CGRect visibleRect;
  visibleRect.origin = [scrollView contentOffset];
  visibleRect.size = [scrollView bounds].size;
  [self setNeedsDisplayInRect:visibleRect];

一部のみが変更される場合は、表示されている四角形の一部を描画することもできます。

また、次の例も見ることができます。

TPKeyboard回避

于 2013-02-19T09:29:37.540 に答える
-1

Scrollview の contentsize プロパティの高さを増やすだけです

于 2013-02-19T09:40:29.793 に答える
-1
- (void)viewDidLoad
 {
[super viewDidLoad];

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



- (void)keyboardWasShown:(NSNotification *)notification
 {
     // To avoid keyboard hides the view
CGRect frame = self.view.bounds; 
if (capitalTextField.enabled ==YES) 
{
    if ([notification name]== UIKeyboardDidShowNotification ) 
    {

        frame.origin.y += 200;
        [self.scrollView scrollRectToVisible:frame animated:YES];
    }
    else
    {
        frame.origin.y -= 200;
        [self.scrollView scrollRectToVisible:frame animated:YES]; 
    }
  }
}
于 2013-02-19T09:35:20.707 に答える