Xamarin iOS教程之使用按鈕接接收使用者輸入

大學霸發表於2015-06-16

Xamarin iOS教程之使用按鈕接接收使用者輸入

Xamarin iOS使用按鈕接接收使用者輸入

按鈕是使用者互動的最基礎控制元件。即使是在iPhone或者iPad中,使用者使用最多操作也是透過觸控實現點選。而點選操作最多的控制元件往往是按鈕控制元件。一般使用UIButton類來實現按鈕。本節將主要講解按鈕相關的內容。

Xamarin iOS使用程式碼新增按鈕

由於按鈕拖放的方式比較簡單,所以不再介紹。這裡直接講解程式碼中如何新增按鈕。使用程式碼為主檢視新增一個按鈕的方式和在2.2.2節中講解的步驟是一樣的。首先需要使用UIButton類例項化一個按鈕物件,然後是設定位置和大小,最後是使用AddSubview()方法將按鈕物件新增到主檢視中。(由於檢視的新增方式都一樣,後面將省略使用程式碼新增檢視這塊內容。)。

【示例2-5】以下將使用程式碼為主檢視新增一個青色的按鈕。程式碼如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __16ViewController : UIViewController

  •          {

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

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

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

  •                             UIButton button = new UIButton ();                                      //例項化按鈕物件

  •                             button.Frame = new RectangleF (120, 261, 80, 30);                 //設定按鈕物件的位置和大小

  •                             button.BackgroundColor = UIColor.Cyan;                                   //設定按鈕物件的背景顏色

  •                             this.View.AddSubview (button);                                                     //將按鈕物件新增到主檢視中

  •                    }

  •               ……                   //這裡省略了檢視載入和解除安裝前後的一些方法

  •                    #endregion

  •          }

  • }

執行效果如圖2.13所示。


2.13  執行效果

注意:由於按鈕檢視繼承了UIView類,所以它繼承了UIView類中的屬性和方法。

Xamarin iOS按鈕的格式化設定

在圖2.13中可以看到,明明是新增了一個按鈕,但是就和新增了一個空白檢視一樣,為了讓按鈕和空白檢視區別開,需要對按鈕進行一些設定。

1.設定按鈕的外觀

外觀是直接區別按鈕和其他檢視的手段。如果是使用Interface Builder新增的按鈕,它的外觀設定方式有兩種,一種是直接開啟屬性介面,對按鈕外觀的進行設定,如圖2.14所示。


2.14  按鈕的設定

另一種就是使用程式碼對按鈕的外觀進行設定。這一種方式適用於使用程式碼新增的按鈕中。表2-2列出了常用的一些外觀設定屬性。

2-2  常用屬性


【示例2-6】下面將在主檢視中新增一個按鈕。此按鈕的標題為I am button,標題的顏色為黑色。程式碼如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __18ViewController : UIViewController

  •          {

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

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

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

  •                             UIButton button = new UIButton ();

  •                             button.Frame = new RectangleF (107, 269, 120, 30);

  •                             button.SetTitle ("I am button", UIControlState.Normal);                   //設定按鈕的標題

  •                             button.SetTitleColor (UIColor.Black, UIControlState.Normal);       //設定按鈕的標題顏色

  •                             this.View.AddSubview (button);

  •                    }

  • ……                     //這裡省略了檢視載入和解除安裝前後的一些方法

  • #endregion

  •          }

  • }

執行效果如圖2.15所示。


2.15  執行效果

2.設定按鈕的狀態

在示例2-6中,設定按鈕的標題和顏色時,需要對按鈕的狀態進行設定,表示按鈕在某一狀態下的標題和標題顏色是什麼樣子。例如,UIControlState.Normal就表示按鈕的一種狀態。對於像按鈕的這類檢視,即可以接受使用者輸入的檢視也被稱為控制元件。這些控制元件都有自己的狀態。表2-3就為開發者詳細介紹了控制元件的狀態。

2-3  控制元件的狀態

3.設定按鈕的型別

按鈕的形式是多種多樣的。例如,在通訊錄中,新增新聯絡人的按鈕是一個加號;檢視來電的詳細資訊時是一個感嘆號等。這些按鈕的實現,可以在例項化按鈕物件時使用UIButtonType來實現。UIButtonType中的內容如表2-4所示。

2-4  UIButtonType的內容

【示例2-7】以下程式碼將設定兩個不同風格的按鈕。程式碼如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __19ViewController : UIViewController

  •          {

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

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

  •                            

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

  • //例項化按鈕物件並設定按鈕的型別

  •                         UIButton button1 = new UIButton (UIButtonType.DetailDisclosure);                      

  • button1.Center = new PointF (160, 150);                              //設定按鈕的中心位置

  •                             this.View.AddSubview (button1);

  • //例項化按鈕物件並設定按鈕的型別

  •                             UIButton button2 = new UIButton (UIButtonType.ContactAdd);

  •                             button2.Center = new PointF (160, 350);                              //設定按鈕的中心位置

  •                             this.View.AddSubview (button2);

  •                    }

  • ……                   //這裡省略了檢視載入和解除安裝前後的一些方法

  •                    #endregion

  •          }

  • }

執行效果如圖2.16所示。

2.16  執行效果

4.設定按鈕的發光效果

發光的按鈕開發者可能在很多的地方遇到過,它的實現其實很簡單,就是使用了ShowsTouchWhenHighlighted屬性來實現的。

【示例2-8】以下程式碼將實現一個發光的按鈕。程式碼如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __17ViewController : UIViewController

  •          {

  •                    ……                    //這裡省略了檢視載入和解除安裝前後的一些方法

  •                    #region View lifecycle

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

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

  •                             UIButton button = new UIButton ();

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

  •                             button.SetTitle ("Hello", UIControlState.Normal);

  •                             this.View.AddSubview (button);

  •                             button.ShowsTouchWhenHighlighted = true;                             //按鈕發光的設定

  •                    }

  • ……                     //這裡省略了檢視載入和解除安裝前後的一些方法

  •                    #endregion

  •          }

  • }

執行效果如圖2.17所示。


2.17  執行效果

Xamarin iOS按鈕的響應

以上講解了按鈕的格式化設定。作為按鈕,最重要的功能就是實現和使用者的響應工作。它的實現事件是TouchUpInside。其語法形式如下:

  • 按鈕物件.TouchUpInside +=觸控按鈕後的方法;

或者是:

  • 按鈕物件名.TouchUpInside +=(sender,e)=>{

  •                    ……

  • };

其中,sender表示事件監視的物件,e就是事件所需要的資料。

【示例2-9以下就為開發者實現了按鈕的響應。當使用者觸控按鈕後,主檢視就會變色。程式碼如下:

  • using System;

  • using System.Drawing;

  • using MonoTouch.Foundation;

  • using MonoTouch.UIKit;

  • namespace Application

  • {

  •          public partial class __3ViewController : UIViewController

  •          {

  •                    UIButton buttonChangeColor;

  •                    bool isYellow;

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

  •                    #region View lifecycle

  •          //建立按鈕buttonChangeColor

  •                    private void CreateButton ()

  •                    {

  •                             RectangleF viewFrame = this.View.Frame;

  •                             RectangleF buttonFrame = new RectangleF (10f, viewFrame.Bottom - 200f,

  • viewFrame.Width - 20f, 50f);

  •                             this.buttonChangeColor = UIButton.FromType (UIButtonType.System);          //例項化物件

  •               //對按鈕的格式化設定

  •                             this.buttonChangeColor.Frame = buttonFrame;

  •                             this.buttonChangeColor.SetTitle ("Tap to change view color", UIControlState.Normal);

  •                             this.buttonChangeColor.SetTitle ("Changing color...", UIControlState.Highlighted);

  •               //實現響應

  •                             this.buttonChangeColor.TouchUpInside += this.ButtonChangeColor_TouchUpInside;

  •                             this.View.AddSubview (this.buttonChangeColor);

  •                     }

  •          //實現觸控按鈕後改變主檢視的背景顏色

  •                    private void ButtonChangeColor_TouchUpInside (object sender, EventArgs e)

  •                    {

  •                             if (isYellow) {

  •                                      this.View.BackgroundColor = UIColor.LightGray;

  •                                      isYellow = false;

  •                             } else {

  •                                      this.View.BackgroundColor = UIColor.Yellow;

  •                                      isYellow = true;

  •                             }

  •                    }

  •                    public override void ViewDidLoad ()

  •                    {

  •                             base.ViewDidLoad ();

  •                            

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

  •                             this.CreateButton ();                                                      //呼叫CreateButton()方法

  •                    }

  • ……                     //這裡省略了檢視載入和解除安裝前後的一些方法

  •                    #endregion

  •          }

  • }

在此程式中,有一個isYellow,它是一個布林型別的變數,當此變數為true時,將主檢視的背景改為淺灰色。當此變數為false時,將主檢視的背景改為黃色。執行效果如圖2.18所示。


2.18  執行效果

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1701421/,如需轉載,請註明出處,否則將追究法律責任。

相關文章