iOS自定義價(jià)格鍵盤

先上圖再說話#

123.png

最近公司項(xiàng)目需求要做一個(gè)自定義價(jià)格鍵盤,雖說網(wǎng)上應(yīng)該有很多demo,但是...還是自己做一個(gè)吧~也方便日后維護(hù).

這次封裝的鍵盤采用的是xib+代碼的形式創(chuàng)建的,因?yàn)轭^部還有另外一個(gè)樣式,所以第二個(gè)樣式(如下圖)就采用代碼來創(chuàng)建了。


33.png

如何切換樣式?

  • 根據(jù)setter方法賦值的同時(shí)重新更新約束
- (void)setSaleType:(SaleType)saleType{
    _saleType = saleType;
    if (saleType == SaleTypeResell) {
        self.selTextField = self.priceTextField; 
        self.topView.hidden = NO;
        
        [self.toLabel removeFromSuperview];
        [self.priceLabel1 removeFromSuperview];
        [self.priceTextField1 removeFromSuperview];
        [self.priceTextField2 removeFromSuperview];
        
    }else if (saleType == SaleTypewant2By){
        
        self.topView.hidden = YES;
        self.selTextField = self.priceTextField1;
        
        [self addSubview:self.priceLabel1];
        [self addSubview:self.toLabel];
        [self addSubview:self.priceTextField1];
        [self addSubview:self.priceTextField2];
        
        [self configWant2ByConstrains];   
    }   
}

驗(yàn)證輸入字符方法

- (BOOL)checkWith:(NSString *)str{
    
    BOOL res = YES;
    
    // 開頭已經(jīng)有0
    if ([self.selTextField.text isEqualToString:@"0"]) {
        if ([str isEqualToString:@"0"]) {
            return NO;
        }else if (![str isEqualToString:@"."]){
            self.selTextField.text = @"";
        }
    }
    
    // 最高100萬
    if ([[self.selTextField.text stringByAppendingString:str] doubleValue] > 1000000) return NO;
    
    // 小數(shù)點(diǎn)后面的處理
    if ([self.selTextField.text containsString:@"."]){
        NSRange range = [self.selTextField.text rangeOfString:@"."];
        NSString *subStr = [self.selTextField.text substringFromIndex:range.location+1];
        if (subStr.length == 2) return NO;
        if ([str isEqualToString:@"."]) return NO;
    }
    return res;
}

//緊接著點(diǎn)擊數(shù)字的方法
- (IBAction)didClick1{
    NSString *str = @"1";
    if (![self checkWith:str]) return;
    self.selTextField.text = [self.selTextField.text stringByAppendingString:str];
}
...

  1. 處理開頭有0
  2. 需求是不能大于100萬
  3. 小數(shù)點(diǎn)后面的細(xì)節(jié)處理

對外公開的方法

// 顯示鍵盤的方法
- (void)show{
    if (self.need_coverView) {
        [self.superview addSubview:self.coverView];
        [self.superview bringSubviewToFront:self];
        [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.mas_equalTo(UIEdgeInsetsMake(0, 0, 0, 0));
        }];
        [self mas_makeConstraints:^(MASConstraintMaker *make) {
            make.height.mas_equalTo(self.contentHeight);
            make.left.right.bottom.mas_equalTo(self.superview);
        }];
        
    }
    if (self.saleType == SaleTypewant2By) [self.priceTextField1 becomeFirstResponder];
    else [self.priceTextField becomeFirstResponder];
}

為鍵盤添加外部灰色遮罩,同時(shí)將鍵盤顯示出來(其實(shí)此處可以加點(diǎn)動畫).

// // 隱藏鍵盤
- (void)dismiss{
    [self.coverView removeFromSuperview];
    [self removeFromSuperview];
}
// 重置鍵盤
- (void)reset{
    self.priceTextField.text = @"";
    self.oriPriceTextField.text = @"";
    self.priceTextField1.text = @"";
    self.priceTextField2.text = @"";
}

然后提供對外的代理方法

- (void)salePriceKeyboardViewDidClickDismiss:(JFSalePriceKeyboardView *)priceKeyboardView;

- (void)salePriceKeyboardViewDidClickBack:(JFSalePriceKeyboardView *)priceKeyboardView;

- (void)salePriceKeyboardViewDidClickConfirm:(JFSalePriceKeyboardView *)priceKeyboardView;

<b>另外要注意的是:點(diǎn)擊textfield如何不彈出系統(tǒng)的鍵盤泌绣?

self.priceTextField.inputView=[[UIView alloc]initWithFrame:CGRectZero];

最后

在Controller里調(diào)用鍵盤:

[self.view addSubview:self.priceKeyboardView];
[self.priceKeyboardView show];

這里只是對鍵盤View的一個(gè)封裝,具體的業(yè)務(wù)邏輯每個(gè)公司不一樣预厌,就不放出來了阿迈。<a >代碼在這里</a>
??別忘了點(diǎn)個(gè)贊哦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市轧叽,隨后出現(xiàn)的幾起案子苗沧,更是在濱河造成了極大的恐慌,老刑警劉巖炭晒,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件待逞,死亡現(xiàn)場離奇詭異,居然都是意外死亡腰埂,警方通過查閱死者的電腦和手機(jī)飒焦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屿笼,“玉大人,你說我怎么就攤上這事翁巍÷恳唬” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵灶壶,是天一觀的道長肝断。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么胸懈? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任担扑,我火速辦了婚禮,結(jié)果婚禮上趣钱,老公的妹妹穿的比我還像新娘涌献。我一直安慰自己,他們只是感情好首有,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布燕垃。 她就那樣靜靜地躺著,像睡著了一般井联。 火紅的嫁衣襯著肌膚如雪卜壕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天烙常,我揣著相機(jī)與錄音轴捎,去河邊找鬼。 笑死蚕脏,一個(gè)胖子當(dāng)著我的面吹牛侦副,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝗锥,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼跃洛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了终议?” 一聲冷哼從身側(cè)響起汇竭,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎穴张,沒想到半個(gè)月后细燎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皂甘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年玻驻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偿枕。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡璧瞬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渐夸,到底是詐尸還是另有隱情嗤锉,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布墓塌,位于F島的核電站瘟忱,受9級特大地震影響奥额,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜访诱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一垫挨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧触菜,春花似錦九榔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漾峡,卻和暖如春攻旦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背生逸。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工牢屋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人槽袄。 一個(gè)月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓烙无,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遍尺。 傳聞我的和親對象是個(gè)殘疾皇子截酷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,302評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件乾戏、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,121評論 4 61
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議迂苛。它實(shí)...
    香橙柚子閱讀 23,908評論 8 183
  • 我最近最想實(shí)現(xiàn)的目標(biāo)就是看到兒子及所有學(xué)子們更具智慧,身心愉悅地學(xué)習(xí)鼓择,生活三幻。所以我咖啡冥想的內(nèi)容: 1.種下滿愿的...
    葉景芳閱讀 147評論 0 1
  • 你的虛情假意泛濫, 她的賣弄肆無忌憚呐能; 本求世上紅顏萬千念搬, 豈料騷年盡是作言。
    冷秋靜閱讀 144評論 0 0