Прокрутите в конкретном текстовом поле в прокрутке Scrollview/Scrollview Spopling, когда клавиатура находится на экране

StackOverflow https://stackoverflow.com/questions/1987943

  •  22-09-2019
  •  | 
  •  

Вопрос

Я застрял здесь,

У меня есть пользовательский ScrollView в представлении, в котором этот вид прокрутки имеет кнопку «Добавить поле», которая позволяет пользователю добавить новое текстовое поле в ScrollView. Когда появляется пользователь на конкретную клавиатуру Textfield и скрыть текстовое поле, чтобы преодолеть это, я следовал примеру 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, просто прекратите прокручивать, пока клавиатура остается на экране. Есть ли способ преодолеть это

Это было полезно?

Решение

Вы, вероятно, просто хотите установить свойство ContentOffset ScollView, а не настраивать его границы.

Другие советы

Реализуйте 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];
}

Вспомогательный метод:

//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);
}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top