zoukankan      html  css  js  c++  java
  • iOS8数字键盘加左下角完成button

    iOS8数字键盘加左下角完成button的核心代码如下面:

    - (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的大小变成了整个屏幕的大小。所以须要对button加入的位置进行适配。



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    CSS 之 @media
    How to fix “Duplicate sources.list entry …” issue
    shell脚本加不加export的区别
    过滤部分错误信息,不输出到stderr
    /dev/null 2>&1 解释(转)
    crontab与环境变量
    PHP实现斐波那契数列非递归方法
    有反斜杠时候,CakePHP往pgsql插入数据异常
    PHP输出图片文件,实现浏览器缓存机制
    sudo: unable to resolve host XXX 解决方法
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4853725.html
Copyright © 2011-2022 走看看