2019独角兽企业重金招聘Python工程师标准>>>
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, 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 = [
"京",
"沪",
"津",
"渝",
"黑",
"吉",
"辽",
"蒙",
"冀",
"新",
"甘",
"青",
"陕",
"宁",
"豫",
"鲁",
"晋",
"皖",
"鄂",
"湘",
"苏",
"川",
"贵", //贵州省
"黔", //贵州省
"滇",
"桂",
"藏",
"浙",
"赣",
"粤",
"闽",
"台",
"琼",
"港",
];