私はiPhoneアプリを書いていますが、キーボードが表示されたときにカバーされるUITextfieldがいくつかあります。したがって、UITextFieldsをに入れ、UIScrollView
キーボードがアクティブになったときにこのメソッドが呼び出されるように、自分自身をデリゲートとして設定します。
-(void) textFieldDidBeginEditing:(UITextField *)textField
{
self.myScrollView.contentSize = CGSizeMake(self.myScrollView.contentSize.width, 560);
[self.myScrollView setContentOffset:CGPointMake(0, 200) animated:YES];
}
textSizeを高くして、テキストフィールドにフォーカスを合わせた後でも、ユーザーがスクロールできるようにしていることに注意してください。
同様に、テキストフィールドがファーストレスポンダーステータスを辞任すると、このメソッドが呼び出されます。
-(void) textFieldDidEndEditing:(UITextField *)textField
{
[self.myScrollView setContentOffset:CGPointMake(0, 0) animated:YES];
self.myScrollView.contentSize = CGSizeMake(self.myScrollView.contentSize.width,self.myScrollView.frame.size.height);
}
キーボードを下げると、すべてのコンテンツが表示されるため、スクロールを有効にする必要がないことに注意してください(contentSize = frame.size)。
ただし、私の問題は、contentOffsetが設定された直後にcontentSizeを設定しているため、setContentOffsetアニメーションを完了する時間がないことです。代わりに、アニメーションは非常にぎくしゃくしているように見えます。助言がありますか?