2014-09-19 78 views
0

我正在用xcode 6 ios 8.0构建我的应用程序。我有一个带有keyboardType UIKeyboardTypeNumberPad的UITextField,并在键盘上添加了一个完成按钮,但它们在ios 8.0 xcode 6.0中不起作用。它的所有工作都很好,直到最新版本的ios 7.1.2发布。Xcode 6.0 iOS 8 KeyboardTypeNumberPad按钮不可见

我订阅了下面的方法调用显示通知和显示按钮的键盘。

  • (无效)keyboardDidShow:(NSNotification *)注意

而且,我发现了以下日志: - 我没有任何日志,直到IOS 7.1.2

无法找到键盘iPhone-Portrait-NumberPad支持类型4的键盘;使用3876877096_Portrait_iPhone-Simple-Pad_Default ios 8.0

任何人都面临此问题。 在此先感谢。

回答

0

我发现了我自己的问题的解决方案。

下面是适用于iOS 8.0以及以下版本的代码。

我测试在iOS 7和8.0(版本的Xcode 6.0.1)

UIWindow* tempWindow; 

UIView* keyboard; 

for (UIWindow *window in [[UIApplication sharedApplication] windows]) 
{ 
    if ([NSStringFromClass([window class]) isEqualToString:@"UITextEffectsWindow"]) 
    { 
     tempWindow = window; 
     break; 
     } 
    } 

for(int i = 0 ; i < [tempWindow.subviews count] ; i++) 
{ 
    keyboard = [tempWindow.subviews objectAtIndex:i]; 
    // keyboard found, add the button 

     if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES){ 
      [keyboard addSubview:self.doneButton]; 
     } 
     //This code will work on iOS 8.0 
     else if([[keyboard description] hasPrefix:@"<UIInputSetContainerView"] == YES){ 

      for(int i = 0 ; i < [keyboard.subviews count] ; i++) 
      { 
       UIView* hostkeyboard = [keyboard.subviews objectAtIndex:i]; 

       if([[hostkeyboard description] hasPrefix:@"<UIInputSetHost"] == YES){ 
        [hostkeyboard addSubview:self.doneButton]; 
       } 
      }     
     } 
} 

但是,我仍然得到这样的警告: -

找不到keyplane支持类型为4键盘iPhone-Portrait-NumberPad;使用3876877096_Portrait_iPhone-Simple-Pad_Default

忽略此警告我得到它的工作。

希望这可以帮助任何人。