2010-07-16 53 views
1

如何设置自定义键盘只针对于UITextField?当我改变using this method时,我的应用程序中的所有键盘都改为这个新的自定义键盘。我补充说:如何将自定义键盘设置为只针对UItextfield

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

UIViewController。但在进入UIView之后,其他UIViewController的键盘也看起来像新的自定义键盘。我如何将自定义键盘限制为只有一个UIView?请帮帮我。提前致谢。

回答

1

我的问题是,一旦我加载自定义键盘,它在应用程序的其他UIviews仍然随处可见。所以我检查了UIToolbar在其他UIkeyboard子视图中的存在并删除。现在,它的做工精细..

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

而不是使用hasPrefix来确定某个特定类的实例是否使用'isMemberOfClass:'或'isKindOfClass:' – Jasarien 2010-07-19 14:51:04

1

如果您将子类UITextView(如该教程所示),则该子类的所有实例都将使用带有解除按钮的工具栏。

如果你不想要工具栏,那么不要使用子类,只需使用原来的UITextView即可。

+0

我不是子类UITextView的。我只用那个函数keyboardWillShow和addObserver方法。这是因为我使用([[UIApplication sharedApplication]窗口]中的(UIWindow * keyboardWindow))? – 2010-07-16 13:44:30

1

你可以尝试检查要在textFieldShouldBeginEditing像这样的文本字段:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (textField == YOUR_DESIRED_TEXTFIELD) { 
     [self openCustomKeyboard]; 
    } 
    return YES; 
} 
4
UITextField* textField; 
UIView* customKeyboard; 


textField.inputView = customKeyboard; 

类似的线程:iPad custom Keyboard GUI