iOS8数字键盘左下角添加完成按钮

来源:互联网 发布:prelude是什么软件 编辑:程序博客网 时间:2024/04/27 19:41

iOS8数字键盘左下角添加完成按钮的核心代码如下:

- (void)addDoneButtonToNumPadKeyboard{    UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];    if (systemVersion < 8.0){        doneButton.frame = CGRectMake(0, 163, 106, 53);    }else{        doneButton.frame = CGRectMake(0, SCREEN_SIZE.height-53, 106, 53);    }    doneButton.tag = NUM_PAD_DONE_BUTTON_TAG;    doneButton.adjustsImageWhenHighlighted = NO;    [doneButton setTitle:@"完成" forState:UIControlStateNormal];    [doneButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];    [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];        NSArray *windowArr = [[UIApplication sharedApplication] windows];    if (windowArr != nil && windowArr.count > 1){        UIWindow *needWindow = [windowArr objectAtIndex:1];        UIView *keyboard;        for(int i = 0; i < [needWindow.subviews count]; i++) {            keyboard = [needWindow.subviews objectAtIndex:i];            NSLog(@"%@", [keyboard description]);            if(([[keyboard description] hasPrefix:@"<UIPeripheralHostView"] == YES) || ([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) || ([[keyboard description] hasPrefix:@"<UIInputSetContainerView"] == YES)){                                UIView *doneButtonView = [keyboard viewWithTag:NUM_PAD_DONE_BUTTON_TAG];                if (doneButtonView == nil){                    [keyboard addSubview:doneButton];                }            }        }    }}-(void)removeDoneButtonFromNumPadKeyboard{    UIView *doneButton = nil;    NSArray *windowArr = [[UIApplication sharedApplication] windows];    if (windowArr != nil && windowArr.count > 1){        UIWindow *needWindow = [windowArr objectAtIndex:1];        UIView *keyboard;        for(int i = 0; i < [needWindow.subviews count]; i++) {            keyboard = [needWindow.subviews objectAtIndex:i];            if(([[keyboard description] hasPrefix:@"<UIPeripheralHostView"] == YES) || ([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) || ([[keyboard description] hasPrefix:@"<UIInputSetContainerView"] == YES)){                doneButton = [keyboard viewWithTag:NUM_PAD_DONE_BUTTON_TAG];                if (doneButton != nil){                    [doneButton removeFromSuperview];                }            }        }    }}





注:

1.iOS8之后,键盘view的description变为以<UIInputSetContainerView开头,所以需要在判断的逻辑中加上这一项。

2.iOS8之后,键盘view的大小变成了整个屏幕的大小,所以需要对按钮添加的位置进行适配。



3 3