codeER.teciOS Developer

【code_小马】自定义数字键盘

2017-04-17  本文已影响6829人  曾经像素有点低

前两周玩 “王者农药” 上瘾了,好久没发文了。游戏误事啊,卸载!--_-- ... 我朋友要实现的一个UI。说系统的数字键盘底部带有字母。UI宝宝不高兴,让他把字母去掉....

YG数字键盘.png 系统的数字键盘.png

没办法,又有谁会去和一个UI讲代码呢。然后他,然而他,他居然!...让我给他写个demo (づ。‿‿。)づ

我们是工程师 ——加油 !
//使用起来很方便
    _yg_numberKey = [[YGNumberKeyboardView alloc]init];
    _yg_numberKey.delegate = self;
    self.yg_textField.inputView = _yg_numberKey;


//实现代理方法
-(void)keyboard:(YGNumberKeyboardView *)keyboard didClickButton:(UIButton *)button WithText:(NSMutableString *)string;

- (BOOL)textFieldShouldClear:(UITextField*)textField;//当输入框的clearButtonMode = UITextFieldViewModeWhileEditing 时候,需要实现以下这个代理

//完整的示例
@interface ViewController ()<UITextFieldDelegate,YGNumberKeyboardDelegate>

/**输入框*/
@property (nonatomic, strong)UITextField * yg_textField;
/**自定义数字键盘*/
@property (nonatomic, strong)YGNumberKeyboardView * yg_numberKey;
/**提交按钮*/
@property (nonatomic,strong) UIButton * submitBtn;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"【code_小马】";
    self.view.backgroundColor = [UIColor colorWithRed:240/255.0 green:145/255.0 blue:146/255.0 alpha:1];

    [self setMytextFied];//数字键盘
    
}

-(void)setMytextFied
{
    
    self.submitBtn = [[UIButton alloc] initWithFrame:CGRectMake(WIDTH/2 - 50, 200, 100, 20)];
    [_submitBtn setTitle:@"submit" forState:UIControlStateNormal];
    [_submitBtn setBackgroundColor:[UIColor cyanColor]];
    [self.view addSubview:_submitBtn];
    [self.submitBtn addTarget:self action:@selector(onSubmitBtnClicked) forControlEvents:UIControlEventTouchUpInside];

    
    self.yg_textField = [[UITextField alloc]initWithFrame:CGRectMake(50, 120, WIDTH-100, 30)];
    self.yg_textField.placeholder = @"【code_小马】自定义数字键盘";
    self.yg_textField.delegate = self;
    self.yg_textField.borderStyle = UITextBorderStyleRoundedRect;
    self.yg_textField.textColor = [UIColor colorWithRed:241/255.0 green:198/255.0 blue:194/255.0 alpha:1.0];
    self.yg_textField.clearButtonMode = UITextFieldViewModeWhileEditing;
    [self.view addSubview:self.yg_textField];
    
    _yg_numberKey = [[YGNumberKeyboardView alloc]init];
    _yg_numberKey.delegate = self;
    self.yg_textField.inputView = _yg_numberKey;
    
    
}

-(void)keyboard:(YGNumberKeyboardView *)keyboard didClickButton:(UIButton *)button WithText:(NSMutableString *)string
{
    self.yg_textField.text = string;
    
    NSLog(@"%@",string);
}

-(void)onSubmitBtnClicked
{
//    [self.yg_textField resignFirstResponder];
    [self.yg_textField endEditing:YES];
}
//点击textField右侧x按钮,会走这个代理
- (BOOL)textFieldShouldClear:(UITextField*)textField
{
    //删除了textField里边的所有内容的时候要记得将num_string置为@“”
    _yg_numberKey.num_string = [[NSMutableString alloc]initWithString:@""];
    return YES;
}


#import <UIKit/UIKit.h>

@class YGNumberKeyboardView;

@protocol YGNumberKeyboardDelegate <NSObject>

@optional
-(void)keyboard:(YGNumberKeyboardView *)keyboard didClickButton:(UIButton *)button WithText:(NSMutableString *)string;



@end

@interface YGNumberKeyboardView : UIView

/**输入*/
@property (nonatomic,strong)NSMutableString * num_string;

@property (nonatomic,assign)id<YGNumberKeyboardDelegate>delegate;

@end

#import "YGNumberKeyboardView.h"

#define WIDTH [UIScreen mainScreen].bounds.size.width
#define HEIGHT [UIScreen mainScreen].bounds.size.height
#define BOARD_H 216

@implementation YGNumberKeyboardView

-(instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        
        [self setKeyBoardContent];
        [self setNumberButtons];
    }
    return self;
}

-(void)setKeyBoardContent
{
    self.frame = CGRectMake(0, HEIGHT-BOARD_H, WIDTH, BOARD_H);
    self.num_string = [NSMutableString string];
    self.backgroundColor = [UIColor lightGrayColor];
//    self.backgroundColor = [UIColor colorWithRed:254/255.0 green:221/255.0 blue:120/255.0 alpha:1];
 
}
-(void)setNumberButtons
{
    NSArray *titleArray = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"X", @"0", @"delete", nil];
    
    int index = 0;
    float button_width = (WIDTH - 30)/3;
    float button_height = (BOARD_H - 40)/4;
    
    for(int i = 0; i < 4; i++)
        for(int j = 0; j < 3; j++)
        {
            float x = 5 + j*(button_width + 10);
            float y = 5 + i*(button_height + 10);
            
            UIButton *button = [self addButtonWithTitle:titleArray[index]
                                                  Frame:CGRectMake(x, y, button_width, button_height)
                                                 BackImg:[UIImage imageNamed:@"btn"]
                                              HighImage:[UIImage imageNamed:@"btnback"]] ;
            [button addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
            [button setBackgroundColor:[UIColor whiteColor]];
            [self addSubview:button];
            
            index++;
        }
   
    
    
}

-(UIButton *)addButtonWithTitle:(NSString *)title Frame:(CGRect)frame
                  BackImg:(UIImage *)backImg HighImage:(UIImage *)highImage
{
    
    UIButton * btn = [UIButton buttonWithType:(UIButtonTypeCustom)];
    btn.frame = frame;
    [btn setTitle:title forState:(UIControlStateNormal)];
    [btn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
    [btn setBackgroundColor:[UIColor whiteColor]];
//    [btn setTitleColor:[UIColor colorWithRed:230/255.0 green:28/255.0 blue:100/255.0 alpha:1] forState:(UIControlStateNormal)];
    [btn setTitleColor:[UIColor blackColor] forState:(UIControlStateNormal)];
    btn.layer.masksToBounds = YES;
    btn.layer.cornerRadius = 4.0;
//    [btn setBackgroundImage:backImg forState:(UIControlStateNormal)];
    [btn setBackgroundImage:highImage forState:(UIControlStateHighlighted)];
    
    [self addSubview:btn];
    
    
    return btn;
}

- (void)onClick:(UIButton *)button
{
    //删除按钮
    if([button.currentTitle isEqualToString:@"delete"]) {
        
        if (self.num_string.length > 0) {
            [self.num_string deleteCharactersInRange:NSMakeRange(self.num_string.length-1, 1)];
        } else {
            return;
        }
    }else{
        [self.num_string appendString:button.currentTitle];
    }
    
    
    
    //代理
    if ([self.delegate respondsToSelector:@selector(keyboard:didClickButton:WithText:)]) {
        
        [self.delegate keyboard:self didClickButton:button WithText:self.num_string];
    }
}


//于是就有了今天这篇文章了,通过上边的代码大家也看到了,我注释掉了一些美化界面的代码,如果打开注释的话,那就是下边的样子了

美化UI后的YG数字键盘.gif

//哈哈哈哈,还可以吧

美文分享

晌午时光

【第十四集】

他拿过我手里借的书,说:“肖伯纳?你也喜欢戏剧吗?”  “还好。”他自然的态度仿佛我们是故交,这让我略略放松。“太好了!”他高兴地说:“我还怕你对这些不感兴趣呢!”  “你有什么事?”他兴奋的样子让我匪夷所思。  他说:“如画,叫你如画可以吧?我注意你很久了!加入戏剧社吧!我觉得没有人比你更适合的了!”  “戏剧社?”我怀疑的看着他问,)“对不起,我……”  我已经习惯拒绝陌生。  “千万别拒绝!”他打断我的话,“我和他们打了赌的,要是你不来,我就糟糕了。”  “打赌?”这样的字眼让我倍感新鲜,如风从来不和我谈这些的。  “是啊,”他不好意思地笑了笑,“我发誓要把你拉入戏剧社,不然……”  他苦笑着一下:“这个月的活动经费就都归我了。”  他英俊脸上的古怪表情让我不禁笑了起来。  他也笑了起来,说,“如画,你比我想象中的更美好!”  阳光透过窗户照在他的脸上,他笑容干净而灿烂,在恍惚间我仿佛见到了如风小的时候,那时他的笑容也是这样的,让人浑身都暖洋洋的。可是,现在的如风却没有了那样的纯真,他的眉目间更多的是阴霾的戾气。  “那么就这样说定了!下次活动我会叫上你!”他把书还给了我,跟我道别。  “等一下!”我叫住他。  他期盼的看着我说:“怎么?”  “你……你叫什么?”我问。  他微微一愣,显然有些吃惊我竟然不认识他。的确,元燮是我们这一届的风云人物,恐怕除了我,T大里没人不认得他。  “我们同班啊!我叫元燮!”  “元燮……”我默念。  “来我这里吧!”他自信满满的说,“我不会让你逃走的!”  他向我挥了挥手,跑出去的时候高兴的跳了起来。  这个男孩给我留下了很好的印象,他亲切而真诚,至少让我觉得安全。这是我第一次和正常的男生打交道,小时的记忆太过久远,而长大之后我所遇到的,则全部不是一般人。  阿福,带给了我无尽的伤害;程豪,让我有一种莫名的畏惧;阿九滨仔他们又是混黑帮的小弟。而如风呢,和他们全都不一样,他的一举一动每字每句都能牵动我的神经,我隐隐的渐渐清楚这是为什么,不管怎么说这恐怕更谈不上普通。  元燮则是无数普通大学生中的一个,但却是我从未接触过的。我像躲在壳子里的蜗牛,偷偷的向外伸出了一点触角.  比起元燮,阿瞳来的更加直接。放学之后,我在校门口被她拦住。  “夏如画!”她叫住我,“我等你很久了,你们学校好大!”  眼前的女孩个子不高,长的也算不上漂亮,但是她的眼睛却很明亮,炯炯有神充满灵气,我对她有种特别的感觉。  “你是谁?”我问。  阿九走了过来,警惕的看着她。  “我叫苏瞳,我认识魏如风!”阿瞳冷冷的对阿九说。  我和阿九都吃了一惊。  “你的手袋是我捡到的。”阿瞳说。谢谢你。”我明白了些。  “有时间的话,一起吃饭吧!”阿瞳微笑的邀请我。  “不可以!风哥要我每天放学就送如画姐回家!”阿九替我拒绝。  阿瞳狠狠的瞪了阿九一眼,她突然想到了什么,笑着说:“也可以阿!那么就去你家吧!”  “这……”我犹豫,我没遇到过这种情况。  “好了,毕竟我也是如风的朋友啊!”阿瞳盯着我,眼神有些奇怪。  “好吧!”我抢在阿九之前说,她意味深长的样子和提及如风的语调使我毅然决然的应允了这个不速之客。  阿九愤愤的替她打开车门,阿瞳满意的上了车。  在自家的客厅里我却格外得不自在,我隐隐的感觉阿瞳在观察我。  “可以给我倒杯茶么?”阿瞳说。  “哦。”我起身。  “你没有朋友?”阿瞳一边环顾四周一边说。  “没有。”我递给她红茶。  阿瞳饶有兴趣的看着我说:“那你平时做什么?不去逛街吗?”  “不去,”我说,“我从目录上买东西。”  “家里只有你们姐弟俩么?”阿瞳说。  “是的。”  “他这么晚都不回来,就只有你一个人?”  “是的。”  “你不做些什么吗?”  “看书,”我奇怪她怎么问了这么多琐碎的问题,“或者睡觉。”  阿瞳一副了然于心的样子,她说:“嗯,看看相本可以吗?我想看看如风小时候的样子。”  “相本?”我愕然,我只有很小时候的几张照片,而如风则根本没有,我们甚至没有一张合影。  “没有。”我突然有点高兴,因为只有我一个人知道如风小时候的样子,阿瞳不会知道了。  阿瞳好像看穿了我的想法,她笑了笑说:“你们的生活还真不正常!”  她的不以为然让我失落。  “如果没什么事……”我实在不想跟她相处了,不知为什么我有点忌惮她。  “有事!”她打断我,“我来找你是有事的。”  我莫名的紧张起来。  阿瞳站起了身,她向前走了几步,猛然转过身说:“我喜欢魏如风!”  她盯着我,“我想应该告诉你。”  我惊讶的望着她,她微笑着跟我对视。  我的心口开始强烈的绞痛,奇怪的是还伴随着一点点的恐惧。  阿瞳不一样,她和阿珊,Linda,秀秀都不一样,我清楚地明白这一点。  大门突然打开,如风走了进来。  “你来干什么!”如风冲阿瞳喊。  “没什么,”阿瞳毫不畏惧的说,“跟你姐姐聊聊天。”她特别强调了“姐姐”这两个字。  如风就像被点了穴,呆呆地站在原地。  “我不吃饭了,如画姐!我会再来看你的,再见!”她冲我眨了眨眼,拿起书包潇洒地走了出去。  我和如风面面相觑。 我们两个人的世界,突然变得有点拥挤。  尽管我是如此的不情愿,阿瞳还是堂而皇之地出现在了我面前。  “如画姐!借厨房用用好吗?我想做些点心!”阿瞳跑来我家说。  “做什么点心?”我对此刻看上去天真无邪的她无可奈何。  “提拉米苏!”她开心的说,“这是我最拿手的!可以给你留一块,不过只能一个!”  “送人么?”我问。  “嗯!我想送去给如风!”她说,一点也不含蓄羞涩。  我的心又疼了一下。  “他不喜欢吃甜食。”我迫不及待的说,心里暗暗企盼她的失落。  然而阿瞳却没露出一点失落的表情,她看着我,仿佛是我说出了什么惊天之语。  “你居然这么不了解他!”阿瞳摇摇头。  “胡说!”我讨厌她的那种明了一切的样子,这让我觉得心虚,“他从小就不喜欢!我们在一起他都不吃的!豆沙的小粽子,还有蛋糕,点心,巧克力!他都拿给我,给他都不要!”  我大声地喊,使劲的证明阿瞳是错的。  “原来是因为你。”阿瞳居然笑了,“是因为你喜欢,所以他才说自己不喜欢吧!”  我呆呆地望着她,如风是这样的温柔对我,然而最先感受到这种无微不至的竟然是阿瞳而不是我。  烤箱“叮咚”一声响起,提拉米苏的香味飘了出来。  “你走吧!”我不想再看她一眼,)“我一会还要去上课!”  “有些难受是吗?但是很遗憾,我的确比你了解他。”阿瞳说,“也更了解你们之间的那种可笑的感情!”  “你走!”我彻底的愤怒了。阿瞳一字一句地说,“在意大利语里,提拉米苏就是‘带我走’的意思。”  如风躲避着阿瞳的注视,低下头走到窗边。  “你不喜欢这样的生活吧,这根本不是你想要的不是吗?看看你,每个表情每个动作恨不得每句话都透露出来你不快乐,你不想做。可惜,你身边的人却没一个懂得你!”  阿瞳一口气说了出来。如风一言不发,默默的抽烟。  “但是我明白!我了解!我看到你的第一眼就知道了,所以我接近你,也接近她。我和你的过去没有一点关系,我庆幸自己没有!如风,我可以陪伴着你,一直陪伴着你做你真正想做的事!带我走,从这个破地方走出去!”  阿瞳从身后紧紧抱住如风,她用额头抵着如风的背,柔声说:“带我走吧!你其实并不讨厌我的,对不对?”  如风轻轻仰起头,他望着窗外的灰色的天空,眼神迷朦。  阿瞳闭上眼睛,如风身上有股好闻的味道,让人想象不出在如此污浊的地方会有这么清新的味道,她微笑着享受,这一刻对于她而言弥足珍贵。  “风哥!”就在这时,阿九闯了进来,他尴尬的且愤怒的望着他们。阿瞳重新坐回到沙发上,如风回过神,他紧张的问:“你怎么这么早就回来了?她呢?”  “如画姐被人带走了……”阿九说。  如风一把抓住他,目露凶光,“你说什么!”  阿九慌张地说:“是如画姐自己跟他走的!他们好像是同学!”  阿瞳饶有兴趣地望着如风。  如风慢慢松开阿九,他抓起外套说:“走,去T大!”  “等等!”阿瞳开口,“你监视她吗?你知不知道这样对自己的姐姐很可笑!你为了什么呢?你为的什么她知道吗?她想知道吗?”  如风冷冷地说:“你很聪明,但是也很自以为是,你不会明白我们之间的事。至于我真正想做什么,你根本不知道!”  如风走了出去,阿九神气的跟在他身后,阿瞳的脸色渐渐暗淡。  带走我的人是元燮。  “如画,没忘记我们的约定吧?”下课后元燮叫住我。  我的脑中仍在反复回想着阿瞳的那个我没能回答上来的问题,没有听见元燮的话。  “如画?你不舒服么?”元燮焦急地问,“要不要我送你去保健室?”  我茫然的看着元燮:“你是?”  元燮苦笑:“原来连我都忘了。”  “元燮!”我终于回过神。  “谢谢你记得我!”元燮很开心的样子,“今天活动!一起去吧!”  “嗯……”我犹豫起来,当真正要踏出那一步时,我才发现自己对“另一个世界”根本一无所知。  元燮关切地问:“怎么?今天有事吗?”  有事?没错!是有事!阿瞳像一只小蛀虫,看透了我的心思不算,还跑到了我内心深处连自己都未敢轻易碰触的地方尽情吞噬。她见到如风了吧?他们在一起做了什么?这些充斥着我的大脑,让我倍感煎熬。“如果是有心事,那么我可不放你走!”我的表情被元燮尽收眼底,他好像明白我想些什么了。  “你看,人的心就这么大,”元燮比划着,“如果不放些新的东西到里边,那么旧的就会一直不走。”  “好吧!”我被他说动了,的确,跟他说话的这一会工夫,我暂时忘了那个恼人的小姑娘。  我告诉阿九我有些事情不用他等了,阿九诧异的望望站在我身边的元燮,匆忙赶回了东歌。  我走入戏剧社引起了一阵骚动。  “不愧是元燮!连夏如画都能被你打动!”  “说说看!用了什么花招?不会是出卖色相吧!”  “这可以记入T大今秋大事记了!”  “她真人更漂亮!”  “奇怪!你说什么真人啊?”  社员们七嘴八舌,一片喧哗。  “好了好了!”社长摆了摆手,他暗暗朝元燮竖起拇指,“夏同学,作为新社员介绍一下自己吧!”  “介绍?”我很不习惯这种吵杂,不安的看着元燮。  “不用了吧,如画她……”元燮替我解围。  “切!什么时候竟然已经称呼如画啦?”  “元燮,你都知道了,可我们还不知道啊!“  大家依依不饶。既然她不想说,元燮也不答应,”社长出头,“那么就提问吧!大家问,夏同学来回答,这样好吧!”  “夏同学是否单身?”  “夏同学,何时何地为何被元燮说动?”  “夏同学,是摩羯座吗?摩羯座都特立独行!”  我茫然不知所措,这辈子我还没一下子面临过这么多问题。  “夏同学!”一个男孩站了起来,“传闻你是某位大佬的地下情妇,这是否是实情呢?”  空气仿佛瞬间凝固,所有人都安静了下来,好奇而紧张的望着我。  我脸色骤变,扭身跑了出去。  我都做了些什么呀!像小丑一样站在他们面前!我的触角狠狠的缩了回去。  “如画!”元燮追了出来。  “你不用说了,”我冷冷得看着他说,“我不会回去了!”  “我没想劝你回去,他刚才的话太过分了!”元燮说,“但是,如画你不能逃避生活,真正的生活!”  元燮的样子很认真,他接着说:“我不知道是谁,出于什么目的把你保护起来,把你远远的放在一个安全的角落,不让任何人接触。但是我感谢这个人,因为他把一个最纯粹的如画放在了我面前,像一张白纸一样……”  原来如风想把我变成一张白纸啊?让沾满尘埃的我变成一张白纸么?像什么都没有发生,空空如也的一张白纸么?  “但是如画,人生不应该仅仅是一张白纸啊!”元燮的眼神变得很温柔,“那上面要有颜色的!而且会是很美很美的颜色!和我一起好吗?我会好好的保护你的!相信我!”.................................................................................

点击阅读文章第十三集

点击阅读文章第十五集

【code_小马】喜欢的话,关注下哦

上一篇 下一篇

猜你喜欢

热点阅读