話不多說,接上去就是幾種完成方法:
1,點擊編纂區之外的處所(UIView)
這是一種很直覺的辦法,當不再須要應用虛擬鍵盤時,只需點擊虛擬鍵盤和編纂區域外的處所,便可以將鍵盤收起,上面程式碼是在 UIView
中內建的觸碰事宜辦法函式,您可以參考 Touch Panel / 觸碰螢幕 / 壓力感應器的根本應用方法一文,找到更多關於觸碰事宜的辦法函式。
– (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if (![myTextView isExclusiveTouch]) { [myTextView resignFirstResponder]; } }
假如要應用此方法請務必記得,你操作畫面的 Custom Class 必定如果 UIView 才行。
畫面的 Custom Class 為 UIView
2. 點擊編纂區域之外的處所(UIControl)
收起虛擬鍵盤的方法與前一種雷同,然則假如你的觸碰事宜裡曾經且寫滿了程式碼,那末便可以斟酌應用,UIControl 的 Touch Up Inside 事宜來收起鍵盤,辦法是將以下程式碼與 UIControl 的 Touch Up Inside 事宜貫穿連接便可。
– (IBAction)dismissKeyboard:(id)sender { [myTextView resignFirstResponder]; }
假如要應用此方法請務必記得,你操作畫面的 Custom Class 必定如果 UIControl 才行。
畫面的 Custom Class 為 UIControl
將收起鍵盤的辦法與 UIControl 事宜貫穿連接
3. 應用制造收起鍵盤的按鈕
當沒有編纂區域之外的處所可供點擊來收起鍵盤,本身制造一個按鈕來收起今朝的虛擬鍵盤,也是一個不錯的辦法,因為按鈕必需在虛擬鍵盤湧現能力顯示於畫面上,是以必需借用 NSNotificationCenter 來贊助我們斷定今朝鍵盤的狀況。
起首在 viewDidLoad:
事宜中,向 NSNotificationCenter 停止註冊,告知 NSNotificationCenter 我們的 doneButtonshow:
辦法函式。
– (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (doneButtonshow:) name: UIKeyboardDidShowNotification object:nil]; }
如今每當虛擬鍵盤湧現時,就會主動呼喚我們自界說的 doneButtonshow:
辦法函式,接上去只需在該辦法函式裡界說按鈕湧現的辦法便可。
-(void) doneButtonshow: (NSNotification *)notification { doneButton = [UIButton buttonWithType: UIButtonTypeRoundedRect]; doneButton.frame = CGRectMake(0, 228, 70, 35); [doneButton setTitle:@”完成編纂” forState: UIControlStateNormal]; [doneButton addTarget: self action:@selector(hideKeyboard) forControlEvents: UIControlEventTouchUpInside]; [self.view addSubview:doneButton]; }
最初是實作按鈕按下去時的 hideKeyboard:
辦法函式,務必記得要在函式中移除該按鈕。
-(void) hideKeyboard { [doneButton removeFromSuperview]; [myTextView resignFirstResponder]; }
4. 應用斷定輸出字元
假如要應用輸出特定字元(例如 return
換行字元)來收起鍵盤,必需先在種別內的 @interface
區段採用 協議,您可以參考 Protocol 協議的應用方法一文,取得更多關於協議的資訊。
在采取 協議以後,接實在作出協議內的 textView:shouldChangeTextInRange:replacementText:
辦法函式,此辦法函式會在字元輸出時觸發,而回傳的 BOOL
值則代表該字元能否要感化,以下程式碼就是在此辦法函式中,應用斷定輸出字元的方法來收起虛擬鍵盤(斷定字元為 return
換行字元)。
– (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if () { [myTextView resignFirstResponder]; return NO; } return YES; }
最初別忘卻在 viewDidLoad:
事宜中,將 UITextView
的署理物件指向本身,如許程式能力准確找到實作 協議辦法函式的種別。
– (void)viewDidLoad { [super viewDidLoad]; myTextView.delegate = self; }
5. 關於鍵盤掩蔽的成績
假如您在實作上有遭受到鍵盤掩蔽編纂區域的成績,可以參考應用 Animation
處理小鍵盤蓋住 UITextField 的成績一文,透過 Core Graphic 的 Animation
功效,在鍵盤湧現時同時挪動編纂區域來處理掩蔽的成績。
6. 總結
這些鍵盤的成績,在日常平凡的開辟進程中都邑碰到,有時刻不怎樣利益理。這篇文章寫的很具體,願望對年夜家的開辟能有所贊助。
【總結IOS封閉鍵盤/加入鍵盤的五種方法】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!