2012-02-24 10 views
1

私はいくつかのテキスト・フィールドを持つscrollViewを持っています。キーボードが表示されると、スクロールビューが表示されます。キーボードが非表示になると、スクロール・ビューが下がります。それは正しく動作します。唯一のことは、キーボードには0.5秒かかります。その間、私は白い背景を見ることができます。期間をscroll3から0.5に設定したいと思います。スクロール・ビュー・セット・アニメーションの持続時間

-(void)textFieldDidBeginEditing: (UITextField *)textField { 
NSLog(@"sowing keyboard"); 
scroll3.frame = CGRectMake(0, -200, 768, 960); 
[scroll3 scrollRectToVisible:scroll3.frame animated:YES]; 

} 


-(void)textFieldDidEndEditing: (UITextField *)textField{ 
NSLog(@"hiding keyboard"); 
scroll3.frame = CGRectMake(0, 44, 768, 960); 
} 

どうすればよいですか?私は[scroll3 setAnimationDuration:0.5]しようとしました。それは動作しません!お願い助けて!!!どうもありがとう。

答えて

2

はこのことかもしれ -

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 
    [scroll3 setFrame:CGRectMake(0, -200, 768, 960)]; 
    [UIView commitAnimations]; 
} 

-(void)textFieldDidEndEditing: (UITextField *)textField 
{ 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 
    [scroll3 setFrame:CGRectMake(0, 44, 768, 960)]; 
    [UIView commitAnimations]; 
} 
+0

おかげで、正常に動作します! – Alessandro

1

UIScrollViewは独自のアニメーションを管理しているため、decelerationRateにアニメーションを長くするように設定することができます。私は手動スワイプのための作品を知っていますが、私はそれが自動スワイプ(表示されたrectを設定する)のために行くかどうかはわかりません。それは試みに値します。

1

可能であれば、NSTimerを使用することもできます。 この方法では、実際にアニメーションの時間を変更することはありませんが、キーボードを表示/非表示にしている間に背景が表示されないように少し遅らせてください。

これは、次のコードのようになります。

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.2] target:self 
    selector:@SEL(scrollMyScrollView) userInfo:nil repeats:NO];  

はこれが0.2秒後に指定したメソッドを呼び出します。 "scrollMyScrollView" - 方法では、今やっていることだけを行います。

役立ちます希望;)

関連する問題