2012-06-08 3 views
3

Что я пытаюсь сделать:Могу ли я переместить рамку UIKeyboard?

Я использую такое же меню в стиле бокового меню, что и новые приложения Facebook и Path. Вот код, на котором я основываю его: https://github.com/pkluz/ZUUIRevealController (нажмите на ссылку для фотографии).

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

-

Должен ли я даже пытаться выяснить способ для достижения этой цели? Или кадр клавиатуры сильно закрыт?

Еще лучше, если вы можете объяснить способ сделать это, используя код GitHub, на котором я основываюсь - я бы определенно дал щедрость (не могу установить его, хотя, поскольку вопрос должен быть включен для несколько дней)!

ответ

6

Решенный ... получается, что на самом деле очень чистый способ сделать это.

UIView * activeKeyboard = activeInputView.inputAccessoryView.superview; 
activeKeyboard.frame = newFrame; 

Это так просто. Никаких недокументированных API-вызовов, но все же пересекаю мои пальцы, что он делает это через процесс утверждения.

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

+0

Я пытаюсь добиться такого же эффекта с помощью ZUUIRevealController (теперь PKRevealController). Сможете ли вы описать свой окружающий код немного больше? Мое решение включает создание inputAccessoryView для доступа к супервизу (клавиатуре). Затем я удаляю клавиатуру из своего супервизора, а затем добавляю ее в качестве подсмотра в мой основной вид ... но это кажется немного хакерским. Я вообще не возился с фреймом. – Jon

+0

@ Это то, что я делаю. Я использую аналогичный элемент управления для ZUUIRevealController. Из памяти, в этом суть - сложная часть делает все отлично, например, вращение и т. Д., И одновременно выглядит хорошо. Ничего, что нельзя сделать, никаких хитроумных хаков или чего-то еще, но я оставлю эту часть вам :) –

2

Возможно, я экспериментировал с чем-то подобным, чтобы воспроизвести поведение приложения «Сообщения» (где пользователь может перетаскивать клавиатуру, прокручивая список сообщений).

Тем не менее, официально не санкционированный способ сделать это, поэтому любое решение, вероятно, будет хакерским и может сломаться с обновлениями ОС.

Способ, которым я это сделал, состоял в основном в том, чтобы найти UIWindow, что клавиатура сидит и изменяет ее свойство transform. Окно клавиатуры в настоящее время использует частный класс UITextEffectsWindow, но это может измениться в любое время, поэтому я не буду полагаться на него. Даже тот факт, что клавиатура находится в окне, к которому вы можете получить доступ вообще (через [[UIApplication sharedApplication] windows]), нигде не документирована и может измениться.

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

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