Xcode 6.0 iOS 8 KeyboardTypeNumberPad按钮不可见

时间:2014-09-19 13:02:24

标签: ios objective-c iphone xcode

我正在用xcode 6 ios 8.0构建我的应用程序。我有一个带有keyboardType UIKeyboardTypeNumberPad的UITextField,并在键盘上添加了一个完成按钮,但它们在ios 8.0 xcode 6.0中不起作用。它一切正常,直到最新版本ios 7.1.2发布。

我订阅键盘显示通知并在下面的方法调用中显示按钮。

  • (void)keyboardDidShow:(NSNotification *)note

另外,我得到以下日志: - 我没有任何日志,直到ios 7.1.2

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

任何人都面临这个问题。 提前谢谢。

1 个答案:

答案 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];
                }
            }                
        }
}

但是,我仍然收到这个警告: -

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

忽略这个警告我开始工作了。

希望这对任何人都有帮助。