一汹想、隱藏自身軟鍵盤
當(dāng)對于有多個(gè)UITextField
控件都想通過點(diǎn)擊“Return
”來隱藏自身軟鍵盤的情況,這時(shí)的最好辦法是使用Did End on Exit事件沿盅。在點(diǎn)擊軟鍵盤右下角的“Return”按鈕后童谒,會(huì)觸發(fā)該事件。
該事件有一個(gè)sender
參數(shù)表示當(dāng)前文本框拦赠,這樣便可以編寫一個(gè)通用的事件處理方法(.m文件)巍沙。
- (IBAction)TextField_DidEndOnExit:(id)sender {
// 隱藏鍵盤.
[sender resignFirstResponder];
}
然后在.h文件中填寫該方法的聲明——
- (IBAction)TextField_DidEndOnExit:(id)sender;
回到storyboard
,并按command+option+enter
打開輔助窗口荷鼠,使輔助窗口顯示.h文件句携。 選中一個(gè)UITextField
控件,點(diǎn)擊鼠標(biāo)右鍵彈出面板允乐,鼠標(biāo)左鍵按住Did End on Exit
事件旁邊的圓圈矮嫉,然后拖曳到右側(cè).h文件的TextField_DidEndOnExit
方法上,便會(huì)建立好事件連接牍疏。 隨后按照同樣的做法蠢笋,將其他UITextField
控件的Did End on Exit
事件也連接到TextField_DidEndOnExit
方法。
運(yùn)行一下鳞陨,可發(fā)現(xiàn)每個(gè)文本框的軟鍵盤都可以通過點(diǎn)擊“Return”
來隱藏了昨寞。
(iOS開發(fā)交流技術(shù)群:563513413,不管你是大牛還是小白都?xì)g迎入駐 炊邦,分享BAT,阿里面試題编矾、面試經(jīng)驗(yàn),討論技術(shù)馁害, 大家一起交流學(xué)習(xí)成長U巍)
二、點(diǎn)擊Return自動(dòng)轉(zhuǎn)到下個(gè)文本框
當(dāng)頁面中有很多個(gè)文本框時(shí)碘菜,如果每次都需要點(diǎn)文本框激活軟鍵盤凹蜈、輸入后點(diǎn)擊Return
隱藏軟鍵盤、再點(diǎn)擊下一個(gè)文本框……這樣操作起來太繁瑣了忍啸。 于是我們希望能夠?qū)崿F(xiàn)點(diǎn)擊Return
時(shí)能夠自動(dòng)轉(zhuǎn)到下一個(gè)文本框仰坦。尤其是對于最后一個(gè)文本框,希望能夠在點(diǎn)擊Return
時(shí)執(zhí)行下一步操作计雌。
例如對于登錄頁面悄晃。它上面有 賬號(hào)文本框(nameTextField)
、密碼文本框(passTextField)
、登錄按鈕(loginButton)
妈橄。
我們希望——點(diǎn)擊賬號(hào)文本框軟鍵盤的Return
時(shí)跳轉(zhuǎn)到密碼文本框庶近,點(diǎn)擊密碼文本框軟鍵盤的Return
時(shí)執(zhí)行登錄。
因?yàn)檫@兩個(gè)文本框的功能不同眷蚓,不能像上一節(jié)那樣寫一個(gè)TextField_DidEndOnExit
做統(tǒng)一處理鼻种,而應(yīng)該分別建立各自的事件處理方法。
回到storyboard沙热,右擊賬號(hào)文本框(nameTextField
)彈出面板叉钥,按住Did End on Exit
事件旁邊的圓圈,然后拖曳到右側(cè).h文件的空白地方篙贸,此時(shí)會(huì)彈出一個(gè)對話框給方法命名投队。輸入名稱 (nameTextField_DidEndOnExit
)后回車確定,便自動(dòng)生成了該事件方法歉秫。
隨后按照同樣的做法蛾洛,為密碼文本框(passTextField
)的Did End on Exit事件連接方法(passTextField_DidEndOnExit
)。
來到.m文件雁芙,填寫具體代碼——
- (IBAction)nameTextField_DidEndOnExit:(id)sender {
// 將焦點(diǎn)移至下一個(gè)文本框.
[self.passTextField becomeFirstResponder];
}
- (IBAction)passTextField_DidEndOnExit:(id)sender {
// 隱藏鍵盤.
[sender resignFirstResponder];
// 觸發(fā)登陸按鈕的點(diǎn)擊事件.
[self.loginButton sendActionsForControlEvents:UIControlEventTouchUpInside];
}
對于賬號(hào)文本框轉(zhuǎn)密碼文本框轧膘,不需要隱藏軟鍵盤,只需要調(diào)用becomeFirstResponder
激活新的文本框就行了兔甘。
對于密碼文本框Return后執(zhí)行登錄丹皱。因?yàn)椴辉傩枰@示軟鍵盤胞锰,所以還是得調(diào)用resignFirstResponder
隱藏軟鍵盤卒稳,然后觸發(fā)登錄按鈕(loginButton)的UIControlEventTouchUpInside
事件進(jìn)行登錄突琳。
運(yùn)行一下,可發(fā)現(xiàn)已經(jīng)達(dá)到我們希望的效果了澡匪。點(diǎn)擊賬號(hào)文本框軟鍵盤的Return
時(shí)跳轉(zhuǎn)到密碼文本框熔任,點(diǎn)擊密碼文本框軟鍵盤的Return
時(shí)執(zhí)行登錄。
怎么都是“Return
”唁情,轉(zhuǎn)換文本框與執(zhí)行登錄明明是不同的功能疑苔?
于是將賬號(hào)文本框的Return Key
屬性設(shè)為“Next
”,將密碼文本框的Return Key
屬性設(shè)為“Done
”甸鸟,使界面與功能一致惦费。
三、輕觸背景隱藏軟鍵盤
只能通過Return
關(guān)閉軟鍵盤太不靈活了抢韭,應(yīng)該提供輕觸背景隱藏軟鍵盤的功能薪贫。
在storyboard
,點(diǎn)擊背景View
刻恭,將它的Custom Class
設(shè)置為UIControl
瞧省,這樣才會(huì)出現(xiàn)Touch Down
事件。
右擊背景View彈出面板,按住Touch Down
事件旁邊的圓圈臀突,然后拖曳到右側(cè).h文件的空白地方建立該事件的處理方法勉抓。
來到.m文件,填寫具體代碼——
- (IBAction)View_TouchDown:(id)sender {
// 發(fā)送resignFirstResponder.
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
}
``
以下文章可以做一個(gè)學(xué)習(xí)參考:
GCD面試要點(diǎn)
block面試要點(diǎn)
Runtime面試要點(diǎn)
RunLoop面試要點(diǎn)
內(nèi)存管理面試要點(diǎn)
MVC候学、MVVM面試要點(diǎn)
網(wǎng)絡(luò)性能優(yōu)化面試要點(diǎn)
網(wǎng)絡(luò)編程面試要點(diǎn)
KVC&KVO面試要點(diǎn)
數(shù)據(jù)存儲(chǔ)面試要點(diǎn)
混編技術(shù)面試要點(diǎn)
設(shè)計(jì)模式面試要點(diǎn)
UI面試要點(diǎn)