如何查找和删除与内置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
。
有关移除键盘并保持第一响应者状态的任何提示吗?
下面的左侧屏幕截图是加载屏幕,它按预期描绘按钮布局。右侧屏幕显示内置键盘如何遮挡计算器按钮。
答案 0 :(得分:6)
您不应该移除键盘。键盘窗口是私有的,正如您所发现的,可能会在不同版本之间进行更改。
获得所需效果的正确方法是将文本字段的inputView
属性设置为包含计算器按钮的视图。然后iOS将负责为您显示该视图,而不是显示默认键盘。
文本,Web和编辑iOS编程指南中的“Custom Views for Data Input”中记录了这一点。