Классический дизайн и тривиальная проблема с UIScrollView - PullRequest
0 голосов
/ 08 марта 2012

Я чувствую себя идиотом, потому что я борюсь с чем-то, что должно быть очень простым, но где-то в моем Xcode есть скрытый диверсант.

Пользовательский интерфейс встроен в StoryBoard.

У меня есть модальное представление, которое содержит верхний UINavigationBar и UIScrollView ... внутри scrollview есть несколько текстовых полей. Теперь я понимаю, что когда я начинаю редактировать текст в текстовом поле, появляется клавиатура. Это нормально. Я отслеживаю этот момент через NotificationCenter.

[notificationCenter addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

Я звоню селектору, когда это происходит

 -(void)keyboardDidShow:(NSNotification *)notification
  {
    ... code changing the frame
  }

Конечно, мне нужно изменить размер прокрутки, чтобы освободить место для клавиатуры, но КАК МОЖНО, как только я присоединяю вновь созданное значение CGRect к «рамке» рамки прокрутки, прокрутка НЕ ​​изменяется в соответствии с моими пожеланиями, а вместо этого занимает размер представления vieconntroller минус 44 пикселя в строке состояния.

Я уже потерял несколько часов на этом, и это сводит меня с ума. Вы можете помочь?

1 Ответ

1 голос
/ 08 марта 2012

Во-первых: зачем вам менять рамку прокрутки? Клавиатура просто появляется над всем в любом случае. Возможно, более удобный способ поймать редактирование BTW - это протокол UITextFieldDelegate, но я думаю, что ваш путь тоже подойдет.

Второе: если вы хотите изменить представление, являющееся свойством view контроллера представления, вы не можете изменить кадр. По умолчанию это полноэкранный режим (без строки состояния, без навигационной панели). Если вы хотите динамически изменить размер представления, оно должно быть подпредставлением self.view.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...