Xamarin iOS文本框視圖

Xamarin iOS文本框視圖

與標籤視圖不一樣,文本框視圖(通常使用UITextField類實現)能夠接收用戶的文本輸入,並進行顯示。ide

【示例2-16】如下將使用文本框來實現QQ登陸界面的效果。具體步驟以下:this

1建立一個Single View Application類型的工程,命名爲2-5spa

2打開MainStoryboard.storyboard文件,對主視圖進行設置。效果如圖2.30所示。orm

2.30  主視圖對象

須要添加的視圖以及設置如表2-8所示。繼承

2-8  設置主視圖開發

3打開2-5ViewController.cs文件,編寫代碼,實現QQ登陸界面的功能。代碼以下:字符串

  • using System;it

  • using System.Drawing;io

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __5ViewController : UIViewController

  •          {

  •                    UITextField tf1;

  •                    UITextField tf2;

  • ……                                                                                    //這裏省略了視圖控制器的構造方法和析構方法

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

  •                             // Perform any additional setup after loading the view, typically from a nib.

  •               //爲主視圖添加文本框對象tf1

  •                             tf1 = new UITextField ();

  •                             tf1.BorderStyle = UITextBorderStyle.RoundedRect;                         //設置文本框的邊框

  •                             tf1.Frame = new RectangleF (54, 150, 211, 30);

  •                             tf1.Placeholder="帳號";                                                                             //設置文本框的佔位符

  •                             this.View.AddSubview (tf1);

  •               //爲主視圖添加文本框對象tf2

  •                             tf2 = new UITextField ();

  •                             tf2.BorderStyle = UITextBorderStyle.RoundedRect;

  •                             tf2.Frame = new RectangleF (54, 220, 211, 30);

  •                             tf2.Placeholder="密碼";

  •                             tf2.SecureTextEntry = true;                                                                      //設置文本框的文本是否隱藏

  •                             this.View.AddSubview (tf2);

  •                             button.TouchUpInside += this.ButtonChange_TouchUpInside;

  •                             label.Hidden = true;

  •                    }

  •          //觸摸「登陸」按鈕後,執行的動做

  •                    private void ButtonChange_TouchUpInside (object sender, EventArgs e)

  •                    {

  •               //判斷文本框對象tf1tf2是否爲空

  •                             if (tf1.Text.Length != 0 && tf2.Text.Length != 0) {

  •                                      this.View.BackgroundColor = UIColor.Orange;

  •                                      label.Hidden = true;

  •                             } else {

  •                                      label.Hidden = false;

  •                             }

  •                    }

  •               ……                                                                           //這裏省略了視圖加載和卸載先後的一些方法

  •                    #endregion

  •          }

  • }

運行效果如圖2.31所示。

2.31  運行效果

注意:在此程序中,使用了BorderStyle屬性對文本框的邊框風格進行了設置。這些邊框風格如表2-9所示。

2-9  邊框風格

SecureTextEntry屬性能夠使編輯的文本隱藏,以小黑點的形式顯示。此屬性通常使用在輸入密碼時,防止被他人盜取。

Xamarin iOS文本框視圖使用技巧——限制文本框的輸入長度

限制文本框的輸入長度在輸入手機號碼、銀行卡號碼的應用程序中最常使用。限制文本框的輸入長度須要使用ShouldChangeCharacters()方法實現。

【示例2-17】下面將只容許用戶在文本框中輸入10個字符。具體的操做步驟以下:

1建立一個Single View Application類型的工程,命名爲2-34

2打開MainStoryboard.storyboard文件,拖動視圖庫中的文本框視圖對象到主視圖中,將此視圖對象的Name設置爲tf

3打開2-34ViewController.cs文件,編寫代碼,實現限制文本框的輸入長度的功能。代碼以下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __34ViewController : UIViewController

  •          {

  • ……                                                                             //這裏省略了視圖控制器的構造方法和析構方法

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

  •                             // Perform any additional setup after loading the view, typically from a nib.

  •                             tf.ShouldChangeCharacters = (textField, range, replacementString) => {

  •                                      if (range.Location < 10) {

  •                                                return true;

  •                                      } else {

  •                                                return false;

  •                                      }

  •                             };

  •                    }

  • ……                                                                             //這裏省略了視圖加載和卸載先後的一些方法

  •                    #endregion

  •          }

  • }

此時運行程序,會看到如圖2.32所示的效果。

2.32  運行效果

注意:在此應用程序中用戶只能夠輸入10個字符串。

Xamarin iOS文本視圖

文本框視圖只容許用戶輸入單行文本,若是想要輸入多行文本該怎麼辦呢?這就須要使用文本視圖解決。UITextView類提供了一個顯示文本編輯塊的方式。

【示例2-18如下就是使用文本視圖實現多行文本的輸入。代碼以下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __6ViewController : UIViewController

  •          {

  •                    ……                                                         //這裏省略了視圖控制器的構造方法和析構方法

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

  •                             // Perform any additional setup after loading the view, typically from a nib.

  •               //爲主視圖添加文本視圖對象myTextView

  •                             UITextView myTextView = new UITextView ();

  •                             myTextView .Frame = new RectangleF (9, 90, 302, 180);

  •                             this.View.AddSubview (myTextView);

  •                             //爲主視圖添加文本視圖對象myText

  •                             UITextView myText = new UITextView ();

  •                             myText .Frame = new RectangleF (9, 330, 302, 180);

  •                             myText.Editable=false;

  •                             this.View.AddSubview (myText);

  •                             myText.Hidden = true;

  •               //爲主視圖添加按鈕對象button

  •                        UIButton button = new UIButton ();

  •                             button.Frame = new RectangleF (137, 56, 46, 30);

  •                             button.SetTitle ("完成", UIControlState.Normal);

  •                             this.View.AddSubview (button);

  •                             button.TouchUpInside += (sender, e) => {

  •                                      myTextView.ResignFirstResponder();                                         //關閉鍵盤

  •                                      myText.Hidden=false;

  •                                      myText.Text=myTextView.Text;

  •                             } ;

  •                             myTextView.Delegate = new MyTextViewDelegate();                       //設置委託

  •                    }

  •          //添加嵌套的類

  •                    private class MyTextViewDelegate : UITextViewDelegate

  •                    {

  •               //當文本視圖剛開始編輯時調用

  •                             public override void EditingStarted (UITextView textView)

  •                             {

  •                                      Console.WriteLine ("開始編輯文本");

  •                             }

  •               //當文本視圖編輯結束時調用

  •                             public override void EditingEnded (UITextView textView)

  •                             {

  •                                      Console.WriteLine ("結束編輯文本");

  •                             }

  •                             //當文本視圖中的內容改變時調用

  • public override void Changed (UITextView textView)

  •                             {

  •                                      Console.WriteLine ("編輯文本");

  •                             }

  •                    }

  • ……                                                                 //這裏省略了視圖加載和卸載先後的一些方法

  •                    #endregion

  •          }

  • }

運行效果如圖2.33所示。

2.33  運行效果

在此示例中,須要注意兩點:

1.鍵盤的消失

當用戶觸摸文本視圖區域時,就會顯示鍵盤;當觸摸「完成」按鈕後,顯示的鍵盤就會消失。讓鍵盤消失的方式其實很簡單,就是使用ResignFirstResponder()方法取消當前的視圖的第一響應功能。

2.文本視圖的委託

當用戶觸摸文本框視圖時,會在應用程序輸出窗口輸出「開始編輯文本」;當文本的內容有所改變時,會在應用程序輸出窗口輸出「編輯文本」;當觸摸按鈕後,會輸出「結束文本編輯」。這些功能的實現就是經過了設置文本視圖的委託delegate實現的。咱們將文本視圖的委託設置爲了MyTextViewDelegate類,此類繼承了UITextViewDelegate類。如如下的代碼

  • private class MyTextViewDelegate : UITextViewDelegate

  • {

  • ……

  • }

MyTextViewDelegate類中重寫了父類UITextViewDelegate中的方法EditingStarted()EditingEnded()Changed(),實現了在應用程序輸出窗口的字符串輸出。

本文選自:Xamarin iOS開發實戰大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!

相關文章
相關標籤/搜索