2013-04-08 3 views
0

Мне было интересно, есть ли у кого-нибудь умный способ проверить, есть ли у объекта тип UIKeyboard? Я не могу использовать уведомления UIKeyboardDidShow, потому что я использую их, чтобы вызывать другие классы вводаView в стороне от клавиатуры, поэтому я должен иметь возможность различать, какой входной элемент в настоящее время находится на экране (т. Е. У меня есть тот, который появляется на экран, который имеет панель управления, которая позволяет вам изменить цвет чего-то).Проверьте, является ли объект 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 был нулевым. Спасибо, спасибо! –

Смежные вопросы