一款方便车牌号输入的键盘和文本框

news/2024/7/5 3:29:05

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Demo点此(Swift):https://pan.baidu.com/s/1qXG6nkK

1.显示自定义文本框,TouchDown代理告诉控制器应

该显示自定义的键盘了.

    /// 车牌号 文本框 (自定义)
    let carNumberContentButton = XNInputCarNumebrButton();

    /// 车牌号 文本框
        addSubview(carNumberContentButton);
        
        carNumberContentButton.sd_layout()
            .topEqualToView(carNumberLabel)
            .leftSpaceToView(carNumberLabel,0)
            .rightSpaceToView(self,space)
            .heightIs(rowHeight);
        
        carNumberContentButton.updateLayout();
        
        // 加载里面的内容
        carNumberContentButton.inputCarNumebrViewLoadContent();
        
        // 添加事件
        carNumberContentButton.addTarget(self, action: #selector(XNEditCarContentView.clickShowKeyboard), forControlEvents: .TouchDown);


// MARK:
// MARK: 事件
extension <#XNEditCarContentView#> {
    
    // MARK:
    // MARK: 点击弹出文本框
    /// 点击弹出文本框
    @objc private func clickShowKeyboard() {
        
        delegate?.delegateShowKeyboard();
        
    }
}

        //实现代理方法调用此段代码 显示键盘
        keyboardViewShowOrHidden(true);

2.创建自定义的键盘

    /// 自定义的键盘View
    private let keyboardView = XNKeyboardView();

        // 实例化键盘
        initKeyboardView();


    // MARK:
    // MARK: 创建键盘
    /// 创建键盘
    private func initKeyboardView() {
        
        // 创建键盘View
        view.addSubview(keyboardView);
        
        keyboardView.frame = CGRectMake(0, UIScreen.mainScreen().bounds.height, UIScreen.mainScreen().bounds.width, 216);
        
        // 设置代理
        keyboardView.xnKeyboardViewDelegate = self;
        
        // 加载内容
        keyboardView.xnKeyboardViewLoadContent();
        
        // 显示键盘
        keyboardViewShowOrHidden(true);
    }

 

3.键盘显示和隐藏

    // MARK:
    // MARK: 键盘的 出现和隐藏
    /// 键盘的 出现和隐藏 true 显示
    private func keyboardViewShowOrHidden(isShow: Bool) {
        
        // 为真 显示
        let y = isShow ? UIScreen.mainScreen().bounds.height - self.keyboardView.height : UIScreen.mainScreen().bounds.height;
        
        // 如果一样不需要做动画
        if keyboardView.y == y {
            
            return;
        }
        
        UIView.animateWithDuration(0.25) {
            
            self.keyboardView.y = y;
        }
        
    }

 

4.复制实现代理方法的逻辑

// MARK:
// MARK: 自定义键盘的 代理方法
extension <#XNEditCarViewController#>: XNKeyboardViewDelegate {
    
    // MARK:
    // MARK: 代理方法 监听点击 赋值
    func XNKeyboardViewMethod(title: String) {
        
        var number = 1;
        
        for i in <#contentView#>.<#carNumberContentButton车牌号文本框名#>.labelArray {
            
            // 当输入到最后一个的时候 让其不被删除 可以赋值
            if number == <#contentView#>.carNumberContentButton.labelArray.count {
                
                i.text = title;
                
                return;
                
            }
            
            if i.text == nil {
                
                i.text = title;
                
                return;
            }
            
            number += 1;
        }
        
        
    }
    
    
    // MARK:
    // MARK: 代理方法 删除
    /// 代理方法 删除
    func XNKeyboardViewDeleteMethod() {
        
        // 递减操作
        for i in <#contentView#>.<#carNumberContentButton车牌号文本框名#>.labelArray.reverse() {
            
            // 判断是不是中文
            if i.text?.xnIsChinese() == true {
                
                // 删除字符
                i.text = nil;
                
                //  显示出 汉字键盘
                keyboardView.keyboardViewToNumberAndGrapheme.alpha = 0;
                
                return;
            }
            
            if i.text != nil {
                
                i.text = nil;
                
                return;
            }
            
        }
        
        
    }
    
    // MARK:
    // MARK: 点击了对勾
    func XNKeyboardViewRightMethod() {
        
        // 文本框的隐藏
        keyboardViewShowOrHidden(false);
    }
}

 

5.判断字符串是不是中文

#pragma mark - 判断字符串 是不是 全是中文
- (BOOL)xnIsChinese
{
    NSString *match = @"(^[\u4e00-\u9fa5]+$)";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match];
    return [predicate evaluateWithObject:self];
}

 

6.

    // MARK: 点击控制器的View调用
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        
        // 显示键盘
        keyboardViewShowOrHidden(false);
    }

 

7.获取到用户输入的车牌号

    /// 获取到用户输入的车名
    let newCarNumberName = XNTool.xnStringLoadCarNumberName(addCarContentView.inputCarNumebrButton.labelArray);

    // MARK:
    // MARK: 一个获取到 用户输入的车牌的 方法
    /// 一个获取到 用户输入的车牌的 方法
    class func xnStringLoadCarNumberName(labelArray: [UILabel]) -> String? {
        
        var carNumberName = String();
        
        // 遍历label
        for i in labelArray {
            
            if i.text == nil {
                
                // 出现 屏幕中间 时间自己定
                JRToast.showWithText("请确认您车牌号输入完整", duration:XNTool().messageContinueTime);
                
                return nil;
            }
            
            carNumberName += i.text!;
            
        }
        
        return carNumberName;
    }

 

8.把字符串 输入到车牌文本框中

// MARK:
    // MARK: 一个把字符串 输入到车牌文本框的方法
    /// 一个把字符串 输入到车牌文本框的方法
    class func xnStringToTextField(labelArray: [UILabel],defaultString: String) {
        
        var number = 0;
        
        for i in defaultString.characters {
            
            labelArray[number].text = String(i);
            
            number += 1;
            
        }
  
    }

 

9.显示字母键盘,在创建键盘的时候

        // 有默认值 所以显示字母键盘
        keyboardView.keyboardViewToNumberAndGrapheme.alpha = 1;

中国34个省级行政区,

其中没有代表澳门的车牌,

贵州省有二个名字,所以数组长度34

        
        /// 中国33个省级行政区 其中有一个 有二种名称
        let arrayProvincialAdministrativeRegion = [
            
            "京",
            "沪",
            "津",
            "渝",
            "黑",
            "吉",
            "辽",
            "蒙",
            "冀",
            "新",
            "甘",
            "青",
            "陕",
            "宁",
            "豫",
            "鲁",
            "晋",
            "皖",
            "鄂",
            "湘",
            "苏",
            "川",
            "贵", //贵州省
            "黔", //贵州省
            "滇",
            "桂",
            "藏",
            "浙",
            "赣",
            "粤",
            "闽",
            "台",
            "琼",
            "港",
            
            ];

 

转载于:https://my.oschina.net/codeismygirl/blog/699687


http://www.niftyadmin.cn/n/547497.html

相关文章

dbunit java_java – org.dbunit.dataset.NoSuchColumnException

我运行测试时遇到以下错误&#xff1a;org.dbunit.dataset.NoSuchColumnException: myTable.MYFIELD - (Non-uppercase input column: myfield) in ColumnNameToIndexes cache map. Note that the maps column names are NOT case sensitive.at org.dbunit.dataset.AbstractTab…

微信扫码支付PHP接入总结

微信扫码支付分为两种模式&#xff0c; 模式一比较复杂&#xff0c;需要公众号配置回调地址。 模式二比较简单&#xff0c;只需要在代码中配置回调地址就可以了。 我这次使用的是模式二。 需要配置参数&#xff0c; const APPID xxx; const MCHID xxx; const KEY xxx; const…

Microsoft.Exchange.OMA.PreferencingServerResources.Resources.dll.EN

今天在安裝 exchange 2003 的時候。提示復制錯誤。。Microsoft.Exchange.OMA.PreferencingServerResources.Resources.dll.EN 找不到該文件。 解決方案&#xff1a; 打開 \exchange2003\setup\i386\exchange\oma\Browse\bin\EN 到該目錄下找到Microsoft.Exchange.OMA.…

转移单的装运和收货

正如前文所说的&#xff0c;AX的很多功能与窗体绑定了&#xff0c;需要剥离出来&#xff0c;有一些类提供了供其他代码直接调用的方法&#xff0c;比如PurchFormLetter及SalesFormLetter的Update方法&#xff0c;它们就帮忙处理了Parm*等一系列的表&#xff0c;并自动过账&…

JAVA学习笔记(1-第一行代码)

为什么80%的码农都做不了架构师&#xff1f;>>> 初期常用DOS命令行&#xff1a; dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回上一级目录 cd/:退回到根目录 del:删除文件 exit:退出DOS命令行 相关版本 J2EE&#xff08;…

攒机的“三大忌律 八项注意”

对于那些想攒机且又对电脑初来乍到的朋友来说&#xff0c;最应该防范的就是传统观念的惯性和奸商的忽悠。我们怎么样才能造就一身反忽悠的本领呢&#xff1f;那就听我总结一下攒机的“三大‘忌’律 八项注意”吧。第一忌&#xff1a;找“熟人”装机可能没有买电脑的朋友传统观念…

java mail.smtp.host_[求助] spring java mail,无法连接smtp问题

谢谢&#xff0c;解决了&#xff0c;写一下解决过程&#xff0c;给有同样需要的人参考&#xff1a;1. 开通客户端授权密码&#xff0c;在163网页上。在客户端登陆&#xff0c;这个密码将替代邮箱密码。2. 下载了一个foxmail&#xff0c;配置25&#xff0c;死活不行。3. 继续配置…

男女的魅力在哪里?

我想男女由于在社会中扮演的角色不同&#xff0c;人们对他们的期待和评价也不尽相同。 当然不论男女对各自的期待都是要求对方起码要人品好&#xff0c;心地善良&#xff0c;有孝心&#xff0c;有爱心等。除此之外&#xff0c;我认为还必须具有以下品质。 女人魅力&#xff1a;…