您的位置:首页 > 移动开发 > IOS开发

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

2015-12-04 15:47 656 查看
- (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的大小变成了整个屏幕的大小,所以需要对按钮添加的位置进行适配。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: