一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - 總結IOS關閉鍵盤/退出鍵盤的五種方式

總結IOS關閉鍵盤/退出鍵盤的五種方式

2021-01-24 15:18iOS開發網 IOS

IOS開發中經常要用到輸入框,默認情況下點擊輸入框就會彈出鍵盤,但是必須要實現輸入框return的委托方法才能取消鍵盤的顯示,對于用戶體驗來說很不友好,我們可以實現例如點擊鍵盤以外的空白區域來將鍵盤關閉的功能,以下

話不多說,接下來就是幾種實現方式:

1,點擊編輯區以外的地方(UIView)

這是一種很直覺的方法,當不再需要使用虛擬鍵盤時,只要點擊虛擬鍵盤和編輯區域外的地方,就可以將鍵盤收起,下面程式碼是在 UIView 中內建的觸碰事件方法函式,您可以參考 Touch Panel / 觸碰螢幕 / 壓力感應器的基本使用方式一文,找到更多關于觸碰事件的方法函式。

?
1
2
3
4
5
– (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 事件連結即可。

?
1
2
3
– (IBAction)dismissKeyboard:(id)sender {
[myTextView resignFirstResponder];
}

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

將收起鍵盤的方法與 UIControl 事件連結

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

當沒有編輯區域以外的地方可供點擊來收起鍵盤,自己制作一個按鈕來收起目前的虛擬鍵盤,也是一個不錯的方法,由于按鈕必須在虛擬鍵盤出現才能顯示于畫面上,因此必須借用 NSNotificationCenter 來幫助我們判斷目前鍵盤的狀態。
首先在 viewDidLoad: 事件中,向 NSNotificationCenter 進行註冊,告訴 NSNotificationCenter 我們的 doneButtonshow: 方法函式。

?
1
2
3
4
– (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (doneButtonshow:) name: UIKeyboardDidShowNotification object:nil];
}

現在每當虛擬鍵盤出現時,就會自動呼叫我們自定義的 doneButtonshow: 方法函式,接下來只要在該方法函式里定義按鈕出現的方法即可。

?
1
2
3
4
5
6
7
8
-(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: 方法函式,務必記得要在函式中移除該按鈕。

?
1
2
3
4
5
-(void) hideKeyboard {
[doneButton removeFromSuperview];
[myTextView resignFirstResponder];
 
}

4. 使用判斷輸入字元

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

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

?
1
2
3
4
5
6
7
– (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if () {
[myTextView resignFirstResponder];
return NO;
}
return YES;
}

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

?
1
2
3
4
5
– (void)viewDidLoad {
[super viewDidLoad];
myTextView.delegate = self;
 
}

5. 關于鍵盤遮蔽的問題

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

6. 總結

這些鍵盤的問題,在平時的開發過程中都會遇到,有時候不怎么好處理。這篇文章寫的很詳細,希望對大家的開發能有所幫助。

延伸 · 閱讀

精彩推薦
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
主站蜘蛛池模板: 88av免费观看 | 国产欧美精品 | 96免费精品视频在线 | 91精品免费国产高清在线 | 精品高潮呻吟99AV无码 | 99视频网址 | 天堂在线观看中文字幕 | 久久亚洲成a人片 | 五月婷婷在线免费观看 | 秘书喂奶好爽一边 | 被强迫变性翘秘书 | 白丝美女同人18漫画 | 欧美日韩一区二区三区韩大 | 欧美a级v片不卡在线观看 | 把老师操了 | 香蕉精品国产高清自在自线 | 国产日韩免费视频 | 日韩欧美国产一区二区三区 | 538亚洲欧美国产日韩在线精品 | 糖心视频在线观看 | 欧美巨吊 | 歪歪私人影院成人毛片 | 国色天香社区视频免费观看3 | 国产欧美一区视频在线观看 | 免看一级一片一在线看 | 亚洲天堂99 | 99热这里只有精品一区二区三区 | 久久99精品国产自在自线 | 国产精品视频播放 | 34看网片午夜理 | 亚洲国产第一区二区三区 | 亚洲成av人片在线观看天堂无码 | 99热久热这里只精品 | 欧美日韩国产亚洲一区二区 | 日本最大的黄色网站 | 爽爽窝窝午夜精品一区二区 | 99久久精品久久久久久清纯 | 国产香蕉一区二区在线网站 | 99热久久这里只有精品23 | 欧洲男同直粗无套播放视频 | 国产a高清|