Как найти и удалить вид, соответствующий встроенной клавиатуре iPhone?
В этом проекте пользователь вводит данные в UITextField
, который всегда является первым респондентом.В предыдущих версиях iOS (2.1 -> 4, я полагаю) мы добавляли прослушиватель для
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(keyboardWillShow:)
name: UIKeyboardWillShowNotification
object: nil
];
Когда клавиатура собирается показать, мы затем удаляем ее (и наше текстовое поле остается первым респондентом).
- (void)keyboardWillShow:(NSNotification *)note {
UIWindow* tempWindow;
UIView* keyboard;
UIView* minusView = nil;
for(int c = 0; c < [[[UIApplication sharedApplication]
windows] count]; c ++) {
tempWindow = [[[UIApplication sharedApplication]
windows] objectAtIndex:c];
// Loop through all views in the current window
for(int i = 0; i < [tempWindow.subviews count]; i++) {
keyboard = [tempWindow.subviews objectAtIndex:i];
//the keyboard view description always starts with <UIKeyboard
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) {
minusView = keyboard;
}
}
}
[minusView removeFromSuperview];
}
Этот подход больше не работает, потому что в iOS 5 нет представления типа UIKeyboard
, которое можно найти таким образом.
Однако есть представлениесо следующим описанием <UITextEffectsWindow: 0x693cca0; frame = (0 0; 320 480); hidden = YES; opaque = NO; layer = <UIWindowLayer: 0x693cdb0>>
, которое я пытался удалить с помощью методов removeFromSuperview
и setIsHidden
.
Есть ли какие-либо советы по снятию клавиатуры и сохранению статуса первого респондента?Снимок экрана ниже - это экран загрузки, который отображает расположение кнопок в соответствии с назначением.Правый экран показывает, как встроенная клавиатура скрывает кнопки калькулятора.