如何以编程方式检查iOS应用中是否存在键盘?
我需要在我的iOS应用程序中检查键盘可见性的状况。
伪代码:
if(keyboardIsPresentOnWindow) {
//Do action 1
}
else if (keyboardIsNotPresentOnWindow) {
//Do action 2
}
我如何检查这种情况?
drawnonward的代码非常接近,但与UIKit的命名空间相冲突,并且可以更容易使用。
@interface KeyboardStateListener : NSObject {
BOOL _isVisible;
}
+ (KeyboardStateListener *)sharedInstance;
@property (nonatomic, readonly, getter=isVisible) BOOL visible;
@end
static KeyboardStateListener *sharedInstance;
@implementation KeyboardStateListener
+ (KeyboardStateListener *)sharedInstance
{
return sharedInstance;
}
+ (void)load
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
sharedInstance = [[self alloc] init];
[pool release];
}
- (BOOL)isVisible
{
return _isVisible;
}
- (void)didShow
{
_isVisible = YES;
}
- (void)didHide
{
_isVisible = NO;
}
- (id)init
{
if ((self = [super init])) {
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(didShow) name:UIKeyboardDidShowNotification object:nil];
[center addObserver:self selector:@selector(didHide) name:UIKeyboardWillHideNotification object:nil];
}
return self;
}
@end
...或采取简单的方法:
当你输入一个文本字段时,它会成为第一个响应者,并出现键盘。 您可以使用[myTextField isFirstResponder]
检查键盘的状态。 如果它返回YES
,那么键盘处于活动状态。
我认为你需要使用关于键盘提供的通知:
来自:http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html
键盘通知
当系统显示或隐藏键盘时,它会发布几个键盘通知。 这些通知包含有关键盘的信息,包括其大小,可用于涉及移动视图的计算。 注册这些通知是获取有关键盘的某些类型信息的唯一方法。 系统为键盘相关事件提供以下通知:
* UIKeyboardWillShowNotification
* UIKeyboardDidShowNotification
* UIKeyboardWillHideNotification
* UIKeyboardDidHideNotification
有关这些通知的更多信息,请参阅UIWindow类参考中的说明。 有关如何显示和隐藏键盘的信息,请参阅文本和Web。
链接地址: http://www.djcxy.com/p/44217.html上一篇: How can I programmatically check whether a keyboard is present in iOS app?