ユーザーがクリックするとキーボードが上にスライドするテキストフィールドがあります。次に、スクロールビューが調整され、入力内容を読み取ることができます。
私の問題は、それが終わったら、ユーザーが画面をスクロールし続けられるようにしたいということです。これはどのように行うことができますか?
ユーザーがクリックするとキーボードが上にスライドするテキストフィールドがあります。次に、スクロールビューが調整され、入力内容を読み取ることができます。
私の問題は、それが終わったら、ユーザーが画面をスクロールし続けられるようにしたいということです。これはどのように行うことができますか?
パート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];
一部のみが変更される場合は、表示されている四角形の一部を描画することもできます。
また、次の例も見ることができます。
Scrollview の contentsize プロパティの高さを増やすだけです
- (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];
}
}
}