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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 教您使用IntelliJ IDEA鍵盤快捷鍵~IntelliJIdea
- win10鍵盤在哪裡設定_win10設定鍵盤的方法相關教程Win10
- win10鍵盤按鍵速度在哪裡設定_win10鍵盤按鍵速度如何設定Win10
- 在Xamarin.iOS專案中使用預設資料庫iOS資料庫
- win10平板虛擬鍵盤怎麼設定_win10平板虛擬鍵盤的設定方法Win10
- iOS 九宮格鍵盤的UIKeyboardTypeNumbersAndPunctuation預設型別iOSUI型別
- iOS 切換鍵盤iOS
- win10在哪設定鍵盤快捷鍵_win10怎麼改鍵盤快捷鍵Win10
- win10電腦鍵盤設定在哪裡_win10開啟鍵盤設定的方法Win10
- 微星鍵盤燈光怎麼設定 微星鍵盤怎麼調燈光
- dell xps15 9550鍵盤燈設定
- 安卓和ios鍵盤擋住輸入內容安卓iOS
- PyCharm常用快捷鍵和設定PyCharm
- MOBIM ios 表情鍵盤排版方法iOS
- iOS WebView UserAgent 獲取和設定iOSWebView
- PTGUI全景合成軟體使用教程之控制點設定GUI
- win10 鍵盤延遲怎麼設定_win10鍵盤延遲設定在哪裡Win10
- 雷蛇鍵盤怎麼設定燈光 雷蛇鍵盤燈光怎麼調
- pycharm的使用,常用快捷鍵,等其他設定PyCharm
- iOS上開發的一個安全鍵盤iOS
- iOS 自定義鍵盤字母按鈕iOS
- Mac電腦如何設定使用PC鍵盤?Mac
- 程式設計師的鍵盤程式設計師
- 雷蛇黑寡婦鍵盤怎麼調燈 雷蛇黑寡婦鍵盤燈設定
- SqlServer主鍵和自增長設定SQLServer
- IDEA 快捷鍵的設定Idea
- PTGUI全景合成軟體使用教程之鏡頭引數設定GUI
- 如何巧妙應對iOS鍵盤難題?iOS
- Win10開機預設開啟小鍵盤?Win10系統設定小鍵盤預設開啟的詳細步驟Win10
- 機械鍵盤怎麼選購?機械鍵盤和普通鍵盤的區別對比
- Linux設定虛擬記憶體教學和實戰Linux記憶體
- 鍵盤快捷鍵使用大全表圖片 電腦鍵盤的快捷鍵用法大全圖解圖解
- 盤點:QuickTime Player 鍵盤快捷鍵和手勢大全UI
- [轉載] PyCharm、CLion 的設定和使用PyCharm
- 電腦shift鍵你會用嗎?關於鍵盤shift鍵的作用和11個使用技巧
- 使用 Appcrawler 進行遍歷測試時,登入需要使用安全鍵盤,該怎麼設定呢APP
- iOS-設定AppIcon圖示和啟動頁iOSAPP
- 戴爾g15鍵盤燈怎麼換顏色 戴爾g15設定鍵盤顏色
- mac中使用妙控鍵盤頂部的功能鍵Mac