iOS系列 基礎篇 08 文本與鍵盤,ios基礎篇

來源:互聯網
上載者:User

iOS系列 基礎篇 08 文本與鍵盤,ios基礎篇
iOS系列 基礎篇 08 文本與鍵盤

 

目錄:

1. 扯扯犢子

2. TextField

3. TextView

4. 鍵盤的開啟和關閉

5. 開啟/關閉鍵盤的通知

6. 鍵盤的種類

7. 最後再扯兩句

 

 

1. 扯扯犢子

  與Label一樣,TextField和TextView也是文本類控制項,是可以編輯常值內容的。

 

  在控制項內容編輯方面,三者都可以通過代碼、雙擊該控制項和屬性偵測器中的Text屬性來實現,但是TextField和TextView比Label多了一個鍵盤的使用。

  另外,TextField和TextView還各有一個委託協議。

  因此,我們把TextField和TextView與之前的Label分開介紹。

 

  下面,我們通過的一個案例,和大家展示TextField和TextView控制項的用法:

1 import UIKit 2 3 class ViewController: UIViewController,UITextFieldDelegate, UITextViewDelegate { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 } 8 9 override func didReceiveMemoryWarning() {10 super.didReceiveMemoryWarning()11 }12 13 }

 

  我們還需要將委派物件ViewController分配給TextView和TextField控制項的委託屬性delegate,這可以通過代碼或者Interface Builder設計器來實現。

  這裡,我們用設計器進行分配,具體實現過程如下:

 

  在設計器中開啟storyboard故事板檔案,右擊TextField控制項,彈出的捷徑功能表如。

  用滑鼠拖拽Outlet-delegate後面的小圓圈到左面的View Controller上:

 響應者鏈從第一個響應者傳到下一個響應者,如果其中一個響應者沒有對事件做出響應,那麼該事件會重新向下傳遞。

 

  顧名思義,“第一響應者”是響應者鏈中的第一個餓,不同的控制項成為“第一響應者”之後的“表現”不太一樣。

  TextField和TextView等輸入類型的控制項會出現鍵盤,而我們只有讓這些控制項放棄他們的“第一響應者”身份,鍵盤才會關閉。

 

  要想放棄“第一響應者”身份,需要調用UIResponder類中的resignFirstResponder方法。

  此方法一般在點擊鍵盤右下角的return鍵或者是背景視圖時觸發,本案例採用點擊return鍵關閉鍵盤的方式。

 

  要實現這個操作,可以利用TextField和TextView的委託協議實現。

  相關的實現代碼是在ViewController檔案中,如下:

 1 import UIKit 2  3 class ViewController: UIViewController,UITextFieldDelegate, UITextViewDelegate { 4  5     override func viewDidLoad() { 6         super.viewDidLoad() 7     } 8  9     override func didReceiveMemoryWarning() {10         super.didReceiveMemoryWarning()11     }12     13     // 通過委託實現放棄第一響應者14     // UITextField委託方法15     func textFieldShouldReturn(textField: UITextField) -> Bool {16         textField.resignFirstResponder()17         return true18     }19 20     // 通過委託實現放棄第一響應者21     // UITextView委託方法22     func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {23         if text=="\n" {24             textView.resignFirstResponder()25             return false26         }27         return true28     }29 30 }

 

  在上述代碼中,textFieldShouldReturn: 方法是UITextFieldDelegate委託協議中定義的方法,在使用者點擊鍵盤時調用。

  其中,第16行代碼為放棄第一響應者,從而關閉鍵盤。

 

  與此類推,textView:shouldChangeTextInRange:replacementText: 方法是由UITextViewDelegate委託協議提供的方法,它也是在使用者點擊鍵盤時被調用。

 

  另外,如果介面中有很多控制項,活著控制項的位置比較靠近螢幕下方,控制項就很可能會被彈出的鍵盤擋住的。

  此時,可以添加UIScrollView控制項來解決,這個咱們後面的文章再說。

 

  最終效果如下:

1 override func viewWillAppear(animated: Bool) { 2 super.viewWillAppear(animated) 3 4 // 註冊鍵盤出現通知 5 NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardDidShow", name: UIKeyboardDidShowNotification, object: nil) 6 7 // 註冊鍵盤隱藏通知 8 NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardDidHide", name: UIKeyboardDidShowNotification, object: nil) 9 }10 11 override func viewWillDisappear(animated: Bool) {12 super.viewWillDisappear(animated)13 14 // 解除鍵盤出現通知15 NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardDidShowNotification, object: nil)16 17 // 解除鍵盤隱藏通知18 NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardDidShowNotification, object: nil)19 }20 21 func keyboardDidShow(notification: NSNotification){22 NSLog("鍵盤開啟")23 }24 25 func keyboardDidHide(notification: NSNotification){26 NSLog("鍵盤關閉")27 }

 

  註冊通知在viewWillAppear: 方法中執行,解除通知在viewWillDisppear: 方法中進行。

  keyboardDidShow: 訊息時在鍵盤開啟時發出的,keyboardDidHide: 訊息時在鍵盤關閉時發出的。

 

 

 

6. 鍵盤的種類

  我們之前所看到的鍵盤都是系統預設的類型。

  在iOS中,開啟有輸入動作的控制項的屬性偵測器,可以發現Keyboard Type的下拉框中選項有11個,表示11中類型的鍵盤,,我們可以根據需要進行選擇:

 

 

 

7. 最後再扯兩句

  東西不多,大家多練練就好。

 

  學會舉一反三,自己多想幾個例子做做試試。那幾個鍵盤都開啟看看長啥樣。

 

  最後,祝大家學習快樂。哈哈。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.