iOS8数字键盘加左下角完成button

iOS8数字键盘加左下角完成button

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116821.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 生成xml dom4j_Java生成xml——DOM4J生成

    java 生成xml dom4j_Java生成xml——DOM4J生成一、四种方式的总结【DOM】DOM方式生成xml是基于DOM树的结构,整个DOM树会存在内存中,所以使用DOM方式可以频繁的修改xml的内容,但是因为DOM树是存在内存中的,所以对内存消耗较大。DOM方式比较适用于需要频繁删改的情况。【SAX】SAX方式生成xml是逐步写一、DOM4J生成实例Dom4JToXmlDemo.javapublicclassDom4JToXmlDemo{p…

    2022年7月14日
    15
  • graylog2(v2.0.3)的安装与配置

    graylog2(v2.0.3)的安装与配置

    2021年8月30日
    60
  • js中判断对象是否为空

    js中判断对象是否为空1.es6中可以使用Object.keys(obj)vardata={};vararr=Object.keys(data);alert(arr.length==0);//true为空,false不为空2.将json对象转化为json字符串,再判断该字符串是否为"{}"vardata={};varb=(JSON.stringify(data)==…

    2022年6月14日
    35
  • Repeater嵌套DataList

    Repeater嵌套DataList&lt;%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="RepeaterDemo.aspx.cs"Inherits="OldbSiteMapProviderDemo.RepeaterDemo"%&gt;&lt;!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitiona

    2022年7月14日
    24
  • 微信小程序实现每日签到功能的方法_小程序签到功能

    微信小程序实现每日签到功能的方法_小程序签到功能微信小程序实现每日签到功能

    2025年7月14日
    2
  • 最简单的ajax例子

    最简单的ajax例子自从JesseJamesGarrett创造了AJAX这个名词,到现在已经过去十八个月了,AJAX几乎让Web开发彻底改头换面。在这一年半的时间里,发生了很多事情,包括Web2.0的热炒,许多创建或使用富互联网技术公司的诞生或复苏,还有真正动态化的在线软件层出不穷。很明显,AJAX这个名词受到开发业界的广欢迎,已经真正的走入到我们生活中,Web应用程序也达到前所未有的发展。  如此火爆的

    2022年7月13日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号