点击上方“iOS开发”,选择“置顶公众号”
关键时刻,第一时间送达!
最近由于项目需求,需要录入车牌号码,诸多限制条件要判断车牌号码的合理性,最后看见支付宝的车牌号码输入键盘,决定自己写一个
考虑过用textfield的inputview来替换,但是本人总感觉会有坑在里面,所以最后决定用自定义的view来做一个 只要做一个简单的弹出动画即可实现inpuview一样的效果,创建文件都会的 我就直接上代码了
#import <UIKit/UIKit.h>
//键盘view的代理,用来监控键盘输入
@protocol LYPlateKeyBoardViewDelegate <NSObject>
//点击键盘上的按钮
- (void)clickWithString:(NSString *)string;
//点击删除按钮
- (void)deleteBtnClick;
@end
@interface LYPlateKeyBoardView : UIView
@property (nonatomic, weak) id<LYPlateKeyBoardViewDelegate> delegate;
//公共方法 - 字符串已经删除完毕
- (void)deleteEnd;
@end
在这里用的代理方法相信大家都会看懂,我就不用多做解释了
.m 文件
#define kWidth self.frame.size.width
#define kHeight self.frame.size.height
#define HEXCOLOR(hex, alp) [UIColor colorWithRed:((float)((hex & 0xFF0000) >> 16)) / 255.0 green:((float)((hex & 0xFF00) >> 8)) / 255.0 blue:((float)(hex & 0xFF)) / 255.0 alpha:alp]
#import "LYPlateKeyBoardView.h"
@interface LYPlateKeyBoardView()<UIGestureRecognizerDelegate>
{
UIView *_backView1; //第一个view
UIView *_backView2; //第二个view
// UIView *_bottomView;
UIButton *_btn;
}
@property (nonatomic, strong) NSArray *array1; //省市简写数组
@property (nonatomic, strong) NSArray *array2; //车牌号码字母数字数组
@end
构思时想用一个view来切换数组的方式来切换显示的不同内容,发现两个数组以及view上布局有点让人头疼,就用了2个view来布局,只要根据输入的字符来隐藏其中一个view
@implementation LYPlateKeyBoardView
- (NSArray *)array1 {
if (!_array1) {
_array1 = @[@"京",@"津",@"渝",@"沪",@"冀",@"晋",@"辽",@"吉",@"黑",@"苏",@"浙",@"皖",@"闽",@"赣",@"鲁",@"豫",@"鄂",@"湘",@"粤",@"琼",@"川",@"贵",@"云",@"陕",@"甘",@"青",@"蒙",@"桂",@"宁",@"新",@"",@"藏",@"使",@"领",@"警",@"学",@"港",@"澳",@""];
}
return _array1;
}
- (NSArray *)array2 {
if (!_array2) {
_array2 = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0",@"Q",@"W",@"E",@"R",@"T",@"Y",@"U",@"I",@"O",@"P",@"A",@"S",@"D",@"F",@"G",@"H",@"J",@"K",@"L",@"",@"Z",@"X",@"C",@"V",@"B",@"N",@"M",@""];
}
return _array2;
}
这里先懒加载两个数组