iOS開發(fā)之定制輸入框

在iOS中能夠用于文本輸入的就兩種控件,分別是:UITextField,UITextView
那么我們?cè)诙ㄖ戚斎肟虻臅r(shí)候,我們到底是選擇UITextField,還是UITextView呢??
分析:
一般來說,輸入框是要輸入多行文字的,并且還應(yīng)該有占位文字提示用戶可以輸入什么樣的內(nèi)容,
了解了需求之后我就要做出選擇了,在做出選擇之前,我們有必要去研究一下UITextField,UITextView二者之間的差異,以做出最優(yōu)選擇

1.UITextField:
優(yōu)點(diǎn):能顯示占位文字
缺點(diǎn):只能顯示一行文字

2.UITextView:
有點(diǎn):能顯示多行文字
缺點(diǎn):不能顯示占位文字

問題來了,我們的需求是既要顯示占位文字,又要顯示多行文字,這個(gè)恰好是二者的結(jié)合體,因此我們只能通過自定義的方式去實(shí)現(xiàn)輸入框
解決方案:
1.自定義控件 LXBMutilRowTextField : UITextField
在能顯示占位文字的基礎(chǔ)上,添加能夠顯示多行文字的功能

2.自定義控件 LXBPlaceholderTextView : UITextView
在能顯示多行內(nèi)容的基礎(chǔ)上,添加占位文字的功能

選擇:
由于第一種方案要LXBMutilRowTextField能夠顯示多行內(nèi)容,難點(diǎn)在于控制光標(biāo)的移動(dòng),不好做
那么第二種方案就非常簡(jiǎn)單,我們只需要在LXBPlaceholderTextView中添加一個(gè)占位文字的功能,我們只需要通過繪圖的技術(shù)把占位文字繪制到LXBPlaceholderTextView中就可以了

關(guān)于接口的設(shè)計(jì):
我們給別人提供一個(gè)輸入框,我們要允許別人設(shè)置占位文字和占位文字的顏色,雖然說設(shè)置占位文字為灰色可以滿足絕大多數(shù)需求,但是從擴(kuò)展性上來講,我們?nèi)匀挥斜匾峁﹑laceholderColor這個(gè)接口,給別人更多的選擇

要注意的點(diǎn):
1.控制好光標(biāo)與占位文字的起始位置要對(duì)其(3,7)或者(4,8)都行

2.因?yàn)楣鈽?biāo)的高度將跟隨輸入文字的高度,因此為了保證占位文字的高度跟光標(biāo)一樣,我們就要保證占位文字的字體跟輸入文字的字體一樣

3.我們開放的屬性,方法這些接口給別人,就是要讓別人隨時(shí)隨刻都可以調(diào)用的,雖然說方便,強(qiáng)大,但由此帶來的副作用也需要我們要去處理的,比如在非常核心的

  • (void)drawRect:(CGRect)rect
    方法中,他只是在第一次顯示的時(shí)候被調(diào)用一次,但是呢別人又可以隨時(shí)隨地的修改占位文子的內(nèi)容,顏色,輸入文字的字體等等,為了解決這個(gè)問題,我們就必須要對(duì)占位文字進(jìn)行重繪:
Paste_Image.png

注意點(diǎn):每次調(diào)用 - (void)drawRect:(CGRect)rect 方法時(shí),系統(tǒng)都會(huì)把以前繪制的東西全部都擦除,再重新繪制.利用這個(gè)特點(diǎn),我們就可以很好地控制占位文字的顯示與隱藏

Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

具體使用:


Paste_Image.png

不足之處:
由于UITextView : UIScrollView,所以我們可以讓我們自定義的輸入框有滾動(dòng)的效果:

但是由于我們先前用繪制的方式將占位文字給畫死了,占位文字不是LXBPlaceholderTextView的子控件,所以光標(biāo)可以滾動(dòng),但是占位文字卻不能滾動(dòng),怎么才能讓占位文字滾動(dòng)呢??
在LXBPlaceholderTextView上搞一個(gè)UILabel,再把占位文字顯示到UILabel上就可以了,UILabel作為UIScrollView的子控件個(gè),將隨UIScrollView的滾動(dòng)一起滾動(dòng)

Paste_Image.png

Paste_Image.png
Paste_Image.png

Paste_Image.png

Paste_Image.png


基本使用:


Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末节仿,一起剝皮案震驚了整個(gè)濱河市掉蔬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌箭启,老刑警劉巖蛉迹,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件北救,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡淀零,警方通過查閱死者的電腦和手機(jī)膛壹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門模聋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人持痰,你說我怎么就攤上這事祟蚀。” “怎么了患雏?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵淹仑,是天一觀的道長(zhǎng)肺孵。 經(jīng)常有香客問我,道長(zhǎng)平窘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任是鬼,我火速辦了婚禮屑咳,結(jié)果婚禮上弊琴,老公的妹妹穿的比我還像新娘。我一直安慰自己紫皇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布聪铺。 她就那樣靜靜地躺著铃剔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪键兜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天谜疤,我揣著相機(jī)與錄音现诀,去河邊找鬼。 笑死坐桩,一個(gè)胖子當(dāng)著我的面吹牛于未,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抖坪,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼闷叉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蚯瞧?” 一聲冷哼從身側(cè)響起品擎,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤萄传,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后秀菱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赶么,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年辫呻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片放闺。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雄人,死狀恐怖础钠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旗吁,我是刑警寧澤停局,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站码倦,受9級(jí)特大地震影響锭碳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜擒抛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一歧沪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诊胞,春花似錦暖夭、人聲如沸鳞尔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糕韧。三九已至枫振,卻和暖如春粪滤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杖小。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國打工予权, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扫腺。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓笆环,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親躁劣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子籍救,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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