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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mmoaay/article/details/39368081

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的大小变成了整个屏幕的大小,所以需要对按钮添加的位置进行适配。



阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页