2010-01-01 3 views
3

я застрял здесь,прокрутки к определенному текстовому полю в Scrollview/Scrollview остановки прокрутки, когда клавиатура на экране

У меня есть пользовательский Scrollview в представлении это вид прокрутки имеет кнопку добавить поле, которое позволяет пользователю добавьте новое текстовое поле в scrollview. Когда пользователь нажимает на определенном текстовое поле появляется виртуальная клавиатура и скрыть текстовое поле, чтобы преодолеть это, я последовал примеру UICatalog, но он перемещает весь Scrollview вверх

, чтобы предотвратить это, я последовал примеру UICatalog и сделал это

-(void)textFieldDidBeginEditing:(UITextField *)sender 
{ 

if (sender.frame.origin.y>109) { 
    moveScrollViewUpBy=(sender.frame.origin.y-109+10); 

    [self viewMovedUp:YES]; 
} 
} 


-(void)viewMovedUp:(BOOL)movedUp 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.3]; 

CGRect rect = formScrollView.frame; 
if (movedUp) 
{ 
    if(rect.origin.y == 0.0f){ 
     rect.origin.y -= kOFFSET_FOR_KEYBOARD; 
     rect.size.height += kOFFSET_FOR_KEYBOARD; 
    } 
} 
else 
{ 
    if(rect.origin.y != 0.0f){ 
     rect.origin.y += kOFFSET_FOR_KEYBOARD; 
     rect.size.height -= kOFFSET_FOR_KEYBOARD; 
    } 
} 
self.formScrollView = rect; 


[UIView commitAnimations]; 
} 

здесь

#define kOFFSET_FOR_KEYBOARD 160.0 

но сдвигает прокрутки вид вверх,

Я хочу, чтобы, когда я нажмите на текстовое поле внизу, в целях прокрутки ... прокручивать просмотр свитки и кажется, что текстовое поле ....

это можно сделать так .... иначе предложить мне другое решение

Я еще один srollview запроса просто остановить прокрутку в то время как клавиатуры остается на экране. Есть ли способ преодолеть это?

ответ

2

Возможно, вы просто хотите установить свойство contentOffset для scrollView, а не корректировать его границы.

+0

thnx для поддержки Позвольте мне попробовать и проверить –

1

Реализовать UITextViewDelegate и выполните следующие действия: метод

- (void)textViewDidBeginEditing:(UITextView *)textView { 

    keyboardShowing = YES; //helper ivar 
    [self sizeToOrientation]; 
    [self.scrollView scrollRectToVisible:textView.frame animated:YES]; 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    keyboardShowing = NO; 
    [self sizeToOrientation]; 
} 

Helper:

//fit to the appropriate view sizes 
- (void)sizeToOrientation { 
    CGSize size; 
    if(keyboardShowing) 
     size = CGSizeMake(320, 190); //make room for keyboard 
    else 
     size = CGSizeMake(320, 420); //full height with tabbar on bottom 

    self.scrollView.frame = CGRectMake(0, 0, size.width, size.height); 
} 

Это хорошо работает для меня.

+0

вы рок чувак ........ thnx alot –

+0

... почему это проголосовало? Это кажется полезным. – jocull

+0

Есть более правильные способы сделать это. Метод sizeToOrientation необходимо заменить на уведомления клавиатуры. Я уточню свой ответ позже. – bentford

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