麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

收起虛擬鍵盤的各種方法--IOS

2019-11-14 20:14:25
字體:
供稿:網(wǎng)友

使用虛擬鍵盤來輸入資訊,是 iOS 的重要互動(dòng)方式之一,虛擬鍵盤通常會(huì)自動(dòng)出現(xiàn)在可以編輯的 UITextField 或是 UITextView 的編輯事件中,叫出鍵盤固然容易,但是要把它收起來,可就沒有這么簡單,之前在 UITextField 輸入結(jié)束后的收起小鍵盤的方式一文中,介紹了如何在編輯完成之后收起虛擬鍵盤,但是如果您的元件并沒有對應(yīng)的事件可以讓你收起虛擬鍵盤,那又該如何做?下列我們以類似的元件 UITextView 為例,介紹一些通用的方法。

 

 1. 點(diǎn)擊編輯區(qū)以外的地方(UIView)

 這是一種很直覺的方法,當(dāng)不再需要使用虛擬鍵盤時(shí),只要點(diǎn)擊虛擬鍵盤和編輯區(qū)域外的地方,就可以將鍵盤收起,下面程式碼是在 UIView 中內(nèi)建的觸碰事件方法函式,您可以參考 Touch Panel / 觸碰螢?zāi)?/ 壓力感應(yīng)器的基本使用方式一文,找到更多關(guān)于觸碰事件的方法函式。

C代碼  收藏代碼
  1. - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {  
  2.     if (![myTextView isExclusiveTouch]) {  
  3.         [myTextView resignFirstResponder];  
  4.     }  
  5. }  

 

 如果要使用此方式請務(wù)必記得,你操作畫面的 Custom Class 一定要是 UIView 才行。

 

 畫面的 Custom Class 為 UIView

 

2. 點(diǎn)擊編輯區(qū)域以外的地方(UIControl)

 收起虛擬鍵盤的方式與前一種相同,但是如果你的觸碰事件里已經(jīng)且寫滿了程式碼,那么就可以考慮使用,UIControl 的 Touch Up Inside 事件來收起鍵盤,方法是將以下程式碼與 UIControl 的 Touch Up Inside 事件連結(jié)即可。

C代碼  收藏代碼
  1. - (IBAction)dismissKeyboard:(id)sender {  
  2.     [myTextView resignFirstResponder];  
  3. }  

 

 如果要使用此方式請務(wù)必記得,你操作畫面的 Custom Class 一定要是 UIControl 才行。

 畫面的 Custom Class 為 UIControl

 將收起鍵盤的方法與 UIControl 事件連結(jié) 

 3. 使用制作收起鍵盤的按鈕

 當(dāng)沒有編輯區(qū)域以外的地方可供點(diǎn)擊來收起鍵盤,自己制作一個(gè)按鈕來收起目前的虛擬鍵盤,也是一個(gè)不錯(cuò)的方法,由于按鈕必須在虛擬鍵盤出現(xiàn)才能顯示于畫面上,因此必須借用 NSNotificationCenter 來幫助我們判斷目前鍵盤的狀態(tài),您可以在類似 Observer Pattern 的 NSNotificationCenter 一文中,找到更多關(guān)于 NSNotificationCenter 的資訊。

  首先在 viewDidLoad: 事件中,向 NSNotificationCenter 進(jìn)行註冊,告訴 NSNotificationCenter 我們的 doneButtonshow: 方法函式,想要訂閱有關(guān) UIKeyboardDidShowNotification 的訊息事件。

C代碼  收藏代碼
  1. - (void)viewDidLoad {  
  2.    [super viewDidLoad];  
  3.   
  4.    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (doneButtonshow:) name: UIKeyboardDidShowNotification object:nil];  
  5. }  

  現(xiàn)在每當(dāng)虛擬鍵盤出現(xiàn)時(shí),就會(huì)自動(dòng)呼叫我們自定義的 doneButtonshow: 方法函式,接下來只要在該方法函式里定義按鈕出現(xiàn)的方法即可。

C代碼  收藏代碼
  1. -(void) doneButtonshow: (NSNotification *)notification {  
  2.    doneButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];  
  3.    doneButton.frame = CGRectMake(0, 228, 70, 35);  
  4.    [doneButton setTitle:@"完成編輯" forState: UIControlStateNormal];  
  5.    [doneButton addTarget: self action:@selector(hideKeyboard) forControlEvents: UIControlEventTouchUpInside];  
  6.   
  7.    [self.view addSubview:doneButton];  
  8. }  

  最后是實(shí)作按鈕按下去時(shí)的 hideKeyboard: 方法函式,務(wù)必記得要在函式中移除該按鈕。

C代碼  收藏代碼
  1. -(void) hideKeyboard {  
  2.    [doneButton removeFromSuperview];  
  3.    [myTextView resignFirstResponder];  
  4. }  

 4. 使用判斷輸入字元

 如果要使用輸入特定字元(例如 return 換行字元)來收起鍵盤,必須先在類別內(nèi)的 @interface 區(qū)段採用  協(xié)定,您可以參考 PRotocol 協(xié)定的使用方式一文,獲得更多關(guān)于協(xié)定的資訊。 

 在採用  協(xié)定之后,接著實(shí)作出協(xié)定內(nèi)的 textView:shouldChangeTextInRange:replacementText:方法函式,此方法函式會(huì)在字元輸入時(shí)觸發(fā),而回傳的 BOOL 值則代表該字元是否要作用,下列程式碼就是在此方法函式中,使用判斷輸入字元的方式來收起虛擬鍵盤(判斷字元為 return 換行字元)。

C代碼  收藏代碼
  1. - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {  
  2. if ([text isEqualToString:@"/n"]) {  
  3. [myTextView resignFirstResponder];  
  4. return NO;  
  5. }  
  6. return YES;  
  7. }  

  最后別忘記在 viewDidLoad: 事件中,將 UITextView 的代理物件指向自己,這樣程式才能正確找到實(shí)作  協(xié)定方法函式的類別。

C代碼  收藏代碼
  1. - (void)viewDidLoad  
  2. {  
  3. [super viewDidLoad];  
  4.   
  5. myTextView.delegate = self;  
  6. }  

 

5. 關(guān)于鍵盤遮蔽的問題

 如果您在實(shí)作上有遭遇到鍵盤遮蔽編輯區(qū)域的問題,可以參考使用 Animation 解決小鍵盤擋住 UITextField 的問題一文,透過 Core Graphic 的 Animation 功能,在鍵盤出現(xiàn)時(shí)同時(shí)移動(dòng)編輯區(qū)域來解決遮蔽的問題。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 三人弄娇妻高潮3p视频 | 高潮激情aaaaa免费看 | 免费观看一区二区三区视频 | 久久久国产精品免费观看 | 成人18免费观看 | 全黄毛片| 欧美成年性h版影视中文字幕 | 看片一区 | 一级黄色毛片播放 | 黄视频在线网站 | 午夜天堂在线视频 | 国产毛片在线高清视频 | www.热| 狠狠干视频网站 | 羞羞羞网站 | 羞羞视频免费视频欧美 | 亚洲第一页在线观看 | 欧美黄色免费视频 | 午夜精品福利视频 | 日韩一级免费毛片 | 一本色道久久99精品综合蜜臀 | 欧美精品久久久久久久久老牛影院 | 91精品久久久久久久久网影视 | 99国产精品国产免费观看 | 在线观看免费毛片视频 | 91午夜少妇三级全黄 | 欧美老外a级毛片 | 男女污视频在线观看 | 久久久久久久久日本理论电影 | 男人的天堂视频网站 | 亚洲一区二区三区四区精品 | 最新午夜综合福利视频 | 亚洲欧美一区二区三区在线观看 | 男男啪羞羞视频网站 | 久久久国产精品网站 | 国产亚洲美女精品久久久2020 | 国产日韩一区二区三区在线观看 | 黄污视频在线看 | 日韩字幕在线观看 | 国产人妖一区二区 | 久久久久免费精品国产小说色大师 |