2012-02-24 3 views
1

У меня есть scrollView с некоторыми текстовыми полями. когда на клавиатуре отображается прокрутка. Когда клавиатура скрыта, вид прокрутки уменьшается. Он работает правильно. Единственное, что клавиатура занимает 0,5 секунды, чтобы подняться, поэтому за это время я вижу белый фон. Я хотел бы задать продолжительность моего scroll3 до 0,5.scroll view set продолжительность анимации

-(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 на что-то более высокое, чтобы анимация занимала больше времени. Я знаю, что это работает для ручных проверок, но я не уверен, что это также касается автоматических проверок (когда вы устанавливаете видимый прямоугольник). Стоит попробовать.

1

Если это возможно в вашем случае, вы можете просто использовать NSTimer. Таким образом, вы не изменили бы продолжительность анимации, но немного задержали ее , чтобы фон не был виден, пока на клавиатуре отображается/скрывается.

Это может выглядеть следующим кодом:

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

Это будет вызывать данный метод после 0,2 секунды. В режиме «scrollMyScrollView» вы делаете то, что делаете сейчас.

Надежда, что помогает;)

Смежные вопросы