我有一个带有一些文本字段的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];但它不起作用!请帮帮我!!!非常感谢。
答案 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” - 方法中,您可以完成现在所做的工作。
希望有所帮助;)