2013-04-08 85 views
0

我想知道是否有人有一个聪明的方法来检查,看看对象是否类型UIKeyboard?我不能使用UIKeyboardDidShow通知,因为我使用它们来提供除键盘外的其他inputView类,所以我必须能够区分哪个inputView当前在屏幕上(即,我有一个弹出的具有控制面板的屏幕,可让您更改某物的颜色)。检查对象是否为UIKeyboard

使用[view isKindOfClass:[UIKeyboard class]]不起作用,因为UIKeyboard无法识别,我无法导入它的.h文件而没有出现错误。

有没有人知道我可以在这里做什么?

回答

5

使用反射。

[view isKindOfClass:NSClassFromString(@"UIKeyboard")] 
1

如果我理解你的要求,你既可以要求的输入视图,如果它是第一个响应者,或者你可以检查inputView属性来看看它的设置,如果是零,它的键盘。

UITextField *field = [[UITextField alloc] initWithFrame:CGRectZero]; 
if([field isFirstResponder]) { 
    //Currently being used to input something 
} 

if([field inputView] != nil) { 
    //User is not using a default keyboard 
} 
+0

公平地讲,上面的回答,我只好将它们标记为正确的,因为他们回答我的问题(没有我意识到我甚至没有键盘视图)。但你的解决方案是我最终使用的解决方案,因为我甚至没有意识到inputView是零。给你一点,谢谢! – 2013-04-08 14:46:52