滚动视图设置动画时长

时间:2012-02-24 12:41:47

标签: ios xcode

我有一个带有一些文本字段的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];但它不起作用!请帮帮我!!!非常感谢。

3 个答案:

答案 0 :(得分: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];
 }

答案 1 :(得分:1)

由于UIScrollView管理自己的动画,您可以尝试将decelerationRate设置为更高的值,以便动画花费更长时间。我知道这适用于手动滑动,但我不确定是否也适用于自动滑动(当您设置可见的矩形时)。值得一试。

答案 2 :(得分:1)

如果您的情况可以,您可能只使用NSTimer。 这样你就不会真正改变动画的持续时间,但会稍微延迟一下 这样当键盘显示/隐藏时背景不可见。

这可能类似于以下代码:

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

这将在0.2秒后调用给定的方法。 在“scrollMyScrollView” - 方法中,您可以完成现在所做的工作。

希望有所帮助;)

相关问题