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加入的位置进行适配。



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

  • 相关阅读:
    4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(
    PlSql加入数据库链接
    UserScan的处理流程分析
    第八十八题(金山笔试题,字符串移动)
    4Sum_leetCode
    LeetCode Add Binary
    Hibernate or JPA Annotation中BLOB、CLOB注解写法
    配置Nginx防止直接用IP訪问Webserver
    Java集合系列之TreeMap源代码分析
    使用Application Loader上传APP流程解读[APP公布]
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4853725.html
Copyright © 2011-2022 走看看