2010-07-16 4 views
1

Как настроить пользовательскую клавиатуру только для UITextField? Когда я меняю using this method, все клавиатуры в моем приложении меняются на эту новую пользовательскую клавиатуру. Я добавил:Как настроить пользовательскую клавиатуру только для UItextfield

[[NSNotificationCenter defaultCenter] addObserver:self.view 
             selector:@selector(keyboardWillShow:) 
             name:UIKeyboardWillShowNotification 
             object:nil]; 

в UIViewController. Но после перехода на то, что UIView, клавиатура в другом UIViewController s также выглядит как новая пользовательская клавиатура. Как я могу ограничить пользовательскую клавиатуру только одним UIView? Пожалуйста, помогите мне. Заранее спасибо.

ответ

1

Моя проблема была когда-то я загрузки пользовательской клавиатуры, она остается везде в других UIViews применения. Поэтому я проверил существование UIToolbar в других подвидных UIkeyboard и удалил. Теперь его работы хорошо ..

for(UIView* keyboardToolbar in [keyboard subviews]){ 
     if([[keyboardToolbar description] hasPrefix:@"<UIToolbar"] == YES) 
      { 
       [keyboardToolbar removeFromSuperview];  
      } 
    } 
+1

вместо использования hasPrefix для определения, является ли экземпляр if определенного класса, используйте 'isMemberOfClass:' или 'isKindOfClass:' – Jasarien

1

Если вы подклассифицировали UITextView (как показано в этом уроке), то все экземпляры этого подкласса будут использовать панель инструментов с кнопкой «Отмена».

Если вы не хотите панель инструментов, то не используйте подкласс, просто используйте оригинальный UITextView.

+0

Я не подклассов UITextView. Я использовал только эту функцию keyboardWillShow и метод addObserver. Это потому, что я использую для (UIWindow * keyboardWindow в [[UIApplication sharedApplication] окна])? –

1

Вы можете попытаться проверить на текстовое поле, что вы хотите на textFieldShouldBeginEditing так:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (textField == YOUR_DESIRED_TEXTFIELD) { 
     [self openCustomKeyboard]; 
    } 
    return YES; 
} 
Смежные вопросы