Xamarin iOS教程之鍵盤的使用和設定
Xamarin iOS教程之鍵盤的使用和設定
Xamarin iOS使用鍵盤
在文字框和文字檢視中可以看到,當使用者在觸控這些檢視後,就會彈出鍵盤。本節將主要講解鍵盤的輸入型別定義、顯示鍵盤時改變輸入檢視的位置等內容。
Xamarin iOS定製鍵盤的輸入型別
鍵盤的型別不只一種,而是有很多種的。當使用者要實現編輯一個聯絡人時,鍵盤就會隨著所輸入的內容不同而發生變化。例如當要輸入聯絡人的電話號碼時,鍵盤就變為數字鍵盤。在不同的地方使用不同型別的鍵盤,會使使用者的操作變得簡單。要定製鍵盤的顯示型別其實很簡單,就是要對文字框或者是文字檢視的第二大屬性進行設定。一般稱第二大屬性為“輸入設定”,如圖2.34所示。
圖2.34 輸入設定
在iOS 8.3中,可以顯示的鍵盤型別如表2-10所示。
表2-10 鍵盤型別
【示例2-19】以下將使用程式碼對定義一個獨特的鍵盤。具體步驟如下:
(1)建立一個Single View Application型別的工程,命名為2-24。
(2)開啟MainStoryboard.storyboard檔案,對主檢視進行設定。效果如圖2.35所示。
圖2.35 主檢視的效果
需要新增的檢視以及設定如表2-11所示。
表2-11 設定檢視
(3)開啟2-24ViewController.cs檔案,編寫程式碼,實現定製一個特殊的鍵盤。程式碼如下:
- using System;
- using System.Drawing;
- using MonoTouch.Foundation;
- using MonoTouch.UIKit;
- namespace Application
- {
- public partial class __24ViewController : UIViewController
- {
- …… //這裡省略了檢視控制器的構造方法和析構方法
- #region View lifecycle
- public override void ViewDidLoad ()
- {
- base.ViewDidLoad ();
- // Perform any additional setup after loading the view, typically from a nib.
- tf.KeyboardType = UIKeyboardType.Url; //設定鍵盤的型別
- tf.KeyboardAppearance = UIKeyboardAppearance.Dark; //設定鍵盤的外觀
- tf.ReturnKeyType = UIReturnKeyType.Next; //設定鍵盤的Return鍵
- }
- …… //這裡省略了檢視載入和解除安裝前後的一些方法
- #endregion
- }
- }
執行效果如圖2.36所示。
圖2.36 執行效果
Xamarin iOS顯示鍵盤時改變輸入檢視的位置
有的時候,使用應用程式的使用者遇到彈出的鍵盤擋住了輸入的文字框或者文字檢視,此時該如何解決呢,這就是下面將要講解的內容。
【示例2-20】以下將在彈出鍵盤後,將擋住的文字框改變位置。具體步驟如下:
(1)建立一個Single View Application型別的工程,命名為2-7。
(2)開啟MainStoryboard.storyboard檔案,將主檢視的背景顏色設定為Scrollview Textured Background color。
(3)開啟2-7ViewController.cs檔案,編寫程式碼,實現在顯示鍵盤時改變文字框檢視的位置。程式碼如下:
- using System;
- using System.Drawing;
- using MonoTouch.Foundation;
- using MonoTouch.UIKit;
- namespace Application
- {
- public partial class __7ViewController : UIViewController
- {
- private NSObject kbdWillShow, kbdDidHide;
- UITextField emailField= new UITextField ();
- …… //這裡省略了檢視控制器的構造方法和析構方法
- #region View lifecycle
- public override void ViewDidLoad ()
- {
- base.ViewDidLoad ();
- // Perform any additional setup after loading the view, typically from a nib.
- emailField.Frame = new RectangleF (10, 500, 300, 30);
- emailField.BorderStyle = UITextBorderStyle.RoundedRect;
- this.View.AddSubview (emailField);
- //鍵盤將要顯示時
- kbdWillShow = UIKeyboard.Notifications.ObserveWillShow((s, e) => {
- RectangleF kbdBounds = e.FrameEnd;
- RectangleF textFrame = emailField.Frame;
- textFrame.Y -= kbdBounds.Height;
- emailField.Frame = textFrame;
- } );
- //鍵盤將要隱藏時
- kbdDidHide = UIKeyboard.Notifications.ObserveDidHide((s, e) => {
- RectangleF kbdBounds = e.FrameEnd;
- RectangleF textFrame = emailField.Frame;
- textFrame.Y += kbdBounds.Height;
- emailField.Frame = textFrame;
- } );
- //觸控鍵盤上的return鍵
- emailField.ShouldReturn = delegate(UITextField textField) {
- return textField.ResignFirstResponder ();
- } ;
- }
- …… //這裡省略了檢視載入和解除安裝前後的一些方法
- #endregion
- }
- }
執行效果如圖2.37所示。
圖2.37 執行效果
注意:當使用者輕拍文字框時,彈出的鍵盤不可以擋住需要輸入文字的文字框,這是每一個開發者的責任,以確保使用者可以看到自已在文字框中究竟輸入了什麼。在這種情況下,我們需要在預設的通知中心新增一個觀察者ObserveWillShow(鍵盤將要顯示時的觀察者)和ObserveWillShow(鍵盤將要隱藏時的觀察者),程式碼如下:
- this.kbdWillShow = UIKeyboard.Notifications.ObserveWillShow((s, e) => {
- ……
- } );
- kbdDidHide = UIKeyboard.Notifications.ObserveDidHide((s, e) => {
- ……
- } );
通知中心是iOS的機制,專門供程式中不同類間的訊息通訊而設定的。正常情況下,它可以透過NSNotificationCenter.DefaultCenter進行訪問。在Xamarin.iOS中提供了一些APIs,它們可以簡化一些事情。在此示例中開發者會發現兩個APIs的用法就是ObserveWillShow和ObserveDidHide。透過呼叫UIKeyboard.Notifications.ObserveWillShow,通知中心將會通知我們鍵盤即將要顯示,同時會執行UIKeyboard.Notifications.ObserveWillShow中的程式。通用UIKeyboard.Notifications.ObserveDidHide,通知中心將會通知我們鍵盤即將要隱藏,同時會執行UIKeyboard.Notifications.ObserveDidHide中的程式。
Xamarin iOS為鍵盤新增工具欄
有的時候,為了讓鍵盤的功能更為齊全,免不了要為它新增新增一個工具欄,此時需要使用到InputAccessoryView屬性。
【示例2-21】以下就是為鍵盤新增工具欄,在工具欄中有一個“完成”的按鈕,單擊此按鈕後,鍵盤就會隱藏。程式碼如下:
- using System;
- using System.Drawing;
- using MonoTouch.Foundation;
- using MonoTouch.UIKit;
- namespace Application
- {
- public partial class __8ViewController : UIViewController
- {
- …… //這裡省略了檢視控制器的構造方法和析構方法
- #region View lifecycle
- public override void ViewDidLoad ()
- {
- base.ViewDidLoad ();
- // Perform any additional setup after loading the view, typically from a nib.
- //為主檢視新增文字框物件
- UITextField emailField=new UITextField();
- emailField.Frame = new RectangleF (10, 100, 300, 30);
- emailField.BorderStyle = UITextBorderStyle.RoundedRect; //設定文字框的邊框
- this.View.AddSubview (emailField);
- emailField.KeyboardType = UIKeyboardType.EmailAddress; //設定鍵盤的型別
- //設定工具欄
- UIToolbar toolHigh = new UIToolbar (); //例項化工具欄物件
- toolHigh.SizeToFit();
- toolHigh.BackgroundColor = UIColor.DarkGray; //設定背景
- //例項化欄按鈕條目
- UIBarButtonItem doneHigh = new UIBarButtonItem("完成",UIBarButtonItemStyle.Done,
- (ss, ea) => {
- emailField.ResignFirstResponder(); //關閉鍵盤
- }
- );
- toolHigh.SetItems(new UIBarButtonItem[] { doneHigh }, true); //為工具欄設定條目
- emailField.InputAccessoryView = toolHigh; //為鍵盤新增自定義檢視
- }
- …… //這裡省略了檢視載入和解除安裝前後的一些方法
- #endregion
- }
- }
執行效果如圖2.38所示。
圖2.38 執行效果
Xamarin iOS退出鍵盤
本小節將講解3種常用的退出鍵盤的方法。
1.使用鍵盤上的return
使用鍵盤上的return鍵退出鍵盤,我們在2.6.2小節的程式碼中提到了,程式碼如下。這裡,需要使用到ShouldReturn()委託方法和ResignFirstResponder()方法。
- emailField.ShouldReturn = delegate(UITextField textField) {
- return textField.ResignFirstResponder ();
- } ;
2.使用按鈕實現觸控背景退出
透過按鈕退出鍵盤我們也在2.6.3小節中提到了,程式碼如下,需要使用ResignFirstResponder方法。
- UIBarButtonItem doneHigh = new UIBarButtonItem("完成",UIBarButtonItemStyle.Done,
- (ss, ea) => {
- emailField.ResignFirstResponder(); //關閉鍵盤
- }
- );
如果需要按鈕實現觸控背景退出鍵盤,我們需要使用到UIButton。至於此按鈕的響應類似於2.6.3小節中使用帶的程式碼。
3.針對文字檢視在選單欄中退出鍵盤
最後一種退出鍵盤是針對文字檢視的。在文字檢視出現的選單中新增一個選單項,將此選單項實現退出鍵盤的功能。
【示例2-22】下面將在文字檢視的選單欄中退出鍵盤。具體的操作步驟如下:
(1)建立一個Single View Application型別的工程,命名為2-35。
(2)開啟MainStoryboard.storyboard檔案,拖動檢視庫中的文字框檢視物件到主檢視中,將此檢視物件的Name設定為tf。
(3)開啟2-35ViewController.cs檔案,編寫程式碼,實現退出鍵盤的功能。程式碼如下:
- using System;
- using System.Drawing;
- using MonoTouch.Foundation;
- using MonoTouch.UIKit;
- using MonoTouch.ObjCRuntime;
- namespace Application
- {
- public partial class __35ViewController : UIViewController
- {
- ……
- #region View lifecycle
- public override void ViewDidLoad ()
- {
- base.ViewDidLoad ();
- // Perform any additional setup after loading the view, typically from a nib.
- //新增選單按鈕
- UIMenuItem item=new UIMenuItem("退出",new Selector("hide"));
- UIMenuController menu = UIMenuController.SharedMenuController;
- menu.MenuItems = new UIMenuItem[] {
- item
- };
- }
- [Export("hide")]
- //退出鍵盤
- public void hide(){
- tv.ResignFirstResponder ();
- }
- ……
- #endregion
- }
- }
此時執行程式,會看到如圖2.39所示的效果。
圖2.39 執行效果
本文選自:Xamarin iOS開發實戰大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1704967/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Xamarin iOS教程之新增和定製檢視iOS
- Xamarin iOS教程之顯示和編輯文字iOS
- Xamarin iOS教程之警告檢視iOS
- Xamarin iOS教程之自定義檢視iOS
- Xamarin iOS教程之進度條和滾動檢視iOS
- Xamarin iOS教程之使用按鈕接接收使用者輸入iOS
- Xamarin iOS教程之頁面控制元件iOS控制元件
- Xamarin iOS教程之檢視顯示影像iOS
- 教您使用IntelliJ IDEA鍵盤快捷鍵~IntelliJIdea
- iOS 鍵盤框架IQKeyboardManager使用iOS框架
- Xamarin iOS教程之編輯介面編寫程式碼iOS
- win10鍵盤按鍵速度在哪裡設定_win10鍵盤按鍵速度如何設定Win10
- win10鍵盤在哪裡設定_win10設定鍵盤的方法相關教程Win10
- win10平板虛擬鍵盤怎麼設定_win10平板虛擬鍵盤的設定方法Win10
- win10在哪設定鍵盤快捷鍵_win10怎麼改鍵盤快捷鍵Win10
- iOS 切換鍵盤iOS
- ios 修改鍵盤returniOS
- win10電腦鍵盤設定在哪裡_win10開啟鍵盤設定的方法Win10
- 雷蛇黑寡婦鍵盤怎麼調燈 雷蛇黑寡婦鍵盤燈設定
- 微星鍵盤燈光怎麼設定 微星鍵盤怎麼調燈光
- 手勢隱藏軟鍵盤&設定UISearchBarUI
- iOS 九宮格鍵盤的UIKeyboardTypeNumbersAndPunctuation預設型別iOSUI型別
- Xamarin iOS教程之申請付費開發者賬號下載證書iOS
- iOS表情鍵盤的完整實現iOS
- iOS開發-鍵盤通知iOS
- 安卓和ios鍵盤擋住輸入內容安卓iOS
- 使用 React Native 自定義安全鍵盤(iOS 和 Android 雙適配)React NativeiOSAndroid
- Xamarin iOS開發實戰上冊----------2.2 新增和定製檢視iOS
- 在Xamarin.iOS專案中使用預設資料庫iOS資料庫
- win10系統設定鍵盤不使用也不進入睡眠的方法Win10
- iOS安全攻防(八):鍵盤快取與安全鍵盤iOS快取
- dell xps15 9550鍵盤燈設定
- 雷蛇鍵盤怎麼設定燈光 雷蛇鍵盤燈光怎麼調
- win10 鍵盤延遲怎麼設定_win10鍵盤延遲設定在哪裡Win10
- VMwareWorkstation設定U盤啟動(或U盤使用)
- MOBIM ios 表情鍵盤排版方法iOS
- iOS: 讓鍵盤消失的的4種方法iOS
- 聯想筆記本進入bios設定按哪個鍵盤 聯想電腦進bios按f幾筆記iOS