文档章节

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

阴雨音语
 阴雨音语
发布于 2016/06/23 10:24
字数 835
阅读 1758
收藏 3

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 = [
            
            "京",
            "沪",
            "津",
            "渝",
            "黑",
            "吉",
            "辽",
            "蒙",
            "冀",
            "新",
            "甘",
            "青",
            "陕",
            "宁",
            "豫",
            "鲁",
            "晋",
            "皖",
            "鄂",
            "湘",
            "苏",
            "川",
            "贵", //贵州省
            "黔", //贵州省
            "滇",
            "桂",
            "藏",
            "浙",
            "赣",
            "粤",
            "闽",
            "台",
            "琼",
            "港",
            
            ];

 

© 著作权归作者所有

共有 人打赏支持
阴雨音语
粉丝 55
博文 294
码字总数 43486
作品 0
东城
程序员
加载中

评论(3)

阴雨音语
阴雨音语

引用来自“温柔的键盘侠”的评论

0澳门独立了
不太
阴雨音语
阴雨音语

引用来自“温柔的键盘侠”的评论

0澳门独立了
不填清楚这些事情~~
温柔的键盘侠
0澳门独立了
从零开始(4)

( 202 ) 修改tabbar背景颜色 详情请点此 ( 201 ) TextField代理 详情请点此 ( 200 ) UIAcivityViewController显示中文 详情请点此 ( 199 ) 用UIAcivityViewController分享图片 详情请点此 ( ...

阴雨音语
2016/06/16
18
0
ChemDraw中怎么打出符号π

很多人日常使用ChemDraw是一款非常优秀的化学绘图软件,在其绘制化学结构式或者反应式的过程中,常常需要添加各种符号。比如有的用户会需要输入希腊字符π,但是不知道用什么方法添加。本教程...

学术研究软件
2016/06/15
18
0
键盘快捷键--jKey

jKey 是另一个非常有用的 JavaScript 快捷键库,用来处理键盘事件。它使用 jQuery,所以可以选择任何可用的元素来设置快捷键命令。基本上,任何元素,比如一个输入框或者文本框,都会有一款适...

叶秀兰
2014/02/28
336
0
怎么用几何画板制作立体阴影效果文字

做为很多的数学老师都喜爱的一款教学辅助软件,几何画板的作图和演示功能是非常强大的,不论是静态图还是动态图都可以制作。但是它对文字的处理上就不是那么强了,有些老师希望可以给文字加上...

学术研究软件
2016/06/24
13
0
7个提高 TextArea 操作性能的 jQuery 插件

默认状态下的Textarea文本的功能确实有限,它甚至不能支持常用的HTML代码,所以,在多数情况下,我们通过其他控件或别的办法来增强Textarea的可操作性,以下就是7个跟提高Textarea操作性能相...

红薯
2011/08/25
3.4K
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

移除或自定义 WordPress 仪表盘欢迎面板

第一次登录 WordPress 后台仪表盘页面,默认都会显示 WordPress 的欢迎面板: 如果我们要移除这个面板,在主题的 functions.php 中添加下面的代码即可: 12 //移除 WordPress 仪表盘欢迎面...

james_laughing
21分钟前
0
0
HashMap实现原理及源码分析

HashMap实现原理及源码分析   哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,...

DemonsI
25分钟前
0
0
eggjs学习笔记

快速初始化 生成项目(要求最低的node版本8.x) npm i egg-init -gegg-init egg-example --type=simplecd egg-examplenpm i 启动项目 npm run dev 配置 环境配置会覆盖默认配置 config...

别人说我名字很长
28分钟前
1
0
Winform Timer控件时间间隔

sender as System.Timers.Timer).Interval = 23 * 60 * 60 * 1000.0;//将时间间隔改为23小时,23小时后重新发生timer_Elapsed事件。 //60000:时间间隔1分钟,300000:时间间隔5分钟,600000:...

笑丶笑
28分钟前
0
0
在win10系统下怎样快速切换任务视图

切换窗口:Alt + Tab 任务视图:Win + Tab (松开键盘界面不会消失) 切换任务视图:Win + Ctrl +左/右 创建新的虚拟桌面:Win + Ctrl + D 关闭当前虚拟桌面:Win + Ctrl + F4...

SummerGao
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部