Как разместить подвид перед клавиатурой?

Я надеюсь вставить подвид перед отображаемой клавиатурой. Я использую следующий код:

[self.view bringSubviewToFront: myView];

но подвид не отображается.


person arachide    schedule 26.03.2012    source источник
comment
Что вы действительно хотите сделать? Потому что показывать вид перед клавиатурой не имеет смысла. Я уверен, что вы что-то упустили, задавая свой вопрос. Расширьте свой вопрос более подробно, что именно вы хотите сделать. Поместите любые снимки экрана тоже, если у вас есть.   -  person Hemang    schedule 26.03.2012


Ответы (3)


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

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];  
UIView* keyboard;  
for(int i=0; i<[tempWindow.subviews count]; i++)   
{
    keyboard = [tempWindow.subviews objectAtIndex:i];  
    // keyboard view found; add the custom button to it  
    if([[keyboard description] hasPrefix:@"UIKeyboard"] == YES)  
        [keyboard addSubview:doneButton];  
}  

Идея bringSubviewToFront провалилась, потому что она (клавиатура) не является частью вашего приложения.

person Altaf    schedule 26.03.2012
comment
Из того, что я вижу в iOS 7, свойство windows не всегда имеет 2 окна. Однако в iOS 8 это работает правильно. - person alexgophermix; 23.07.2015

Кредит Артему из этого вопроса

Вместо того, чтобы использовать этот цикл for для поиска правильного окна, вы можете вместо этого использовать:

UIWindow * window = [UIApplication sharedApplication].windows.lastObject;

[window addSubview:_menuView];
[window bringSubviewToFront:_menuView];

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

person simon_smiley    schedule 25.06.2014

@Altaf, префикс, который вы упоминаете в своем коде, не подходит. Вы должны использовать:

if([[keyboard description] hasPrefix:@"<UIPeripheralHostView"] == YES)

См. пример с классами Touchpose для демонстрации касаний в демонстрационных приложениях, которые я модифицировал для отображения анимации на клавиатуре.

person Denis    schedule 17.10.2014