Подтвердить что ты не робот

UIScrollView не прокручивается в iOS7 с автозапуском на

У меня есть UIScrollView с 6 текстовыми полями в нем и кнопкой внутри него. В scrollView недостаточно содержимого для прокрутки.

Но когда клавиатура показывает, мне нужно прокрутить прокрутку, чтобы пользователю не пришлось отбрасывать клавиатуру, чтобы выбрать другое текстовое поле, скрытое клавиатурой.

Я использую iOS7 и включаю автозапуск.

Любые предложения?

Я использую раскадровки, и единственный код, который у меня есть, следующий.

файл reg.h

interface registerViewController : UIViewController <UITextFieldDelegate, UIScrollViewDelegate>
4b9b3361

Ответ 1

Чтобы прокручивать прокрутку, размер содержимого должен быть больше, чем кадр прокрутки, поэтому в прокрутке есть что-то, что можно прокрутить. Используйте setContentSize для настройки размера содержимого:

[scrollview setContentSize:CGSizeMake(width, height)];

В этом случае вы должны настроить размер на view.frame.width, view.frame.height + keyboard_height, а затем отрегулировать смещение содержимого после появления клавиатуры:

[scrollview setContentOffset:CGPointMake(0, 0 - keyboard_height)];

Если для какой-то завихренной причины, связанной с автозапуском, это все еще не позволяет прокручивать представление, реализуйте эту функцию setContentSize в viewDidLayoutSubviews, чтобы переопределить автоопределение:

- (void)viewDidLayoutSubviews {
     [scrollview setContentSize:CGSizeMake(width, height)];
}

ИЗМЕНИТЬ: В reset прокрутить список после отклонения клавиатуры, reset размер содержимого прокрутки до кадра scrollview и смещения до нуля:

[scrollview setContentSize:CGSizeMake(scrollview.frame.size.width, scrollview.frame.size.height)];
[scrollview setContentOffset:CGPointZero];

P.S. Чтобы оживить смещение содержимого, используйте:

[scrollview setContentOffset:offsetSize animated:YES];

Ответ 2

В UIScrollViews есть свойство contentInset, вы можете установить contentInset для создания дополнительного пространства внизу, чтобы позволить прокрутку без изменения contentSize.

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, 100, 0.0);
scrollView.contentInset = contentInsets;

выше код добавляет 100 точек вставки внизу.

Кстати, есть официальный документ по этому вопросу. Это объясняет все, что вы должны делать. Вы можете найти здесь здесь. Вы можете найти то, что ищете в разделе "Перемещение содержимого, находящегося под клавиатурой".

Ответ 3

Try

  • Создать представление прокрутки
  • Добавить представление в список прокрутки (в моем случае я добавил представление как mainView).
  • Установить автопрокрутку ScrollView.
  • Установить MainView autoresizing.

  • Чтобы установить содержание прокрутки. Размер, равный созданному виду, добавит строку ниже

Добавьте строку ниже

-(void)viewDidLayoutSubviews

{

[super viewDidLayoutSubviews];

self.scrollView.contentSize = self.mainView.frame.size;

}