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人!

Xamarin iOS教程之使用按钮接接收用户输入的更多相关文章

  1. iOS 11开发教程(十七)iOS11应用视图之使用按钮接收用户输入

    iOS 11开发教程(十七)iOS11应用视图之使用按钮接收用户输入 在iOS中提供了很多的控件以及视图来丰富用户界面,对于这些视图以及控件我们在上一章中做了简单的介绍.本章我们将详细讲解这些视图. ...

  2. Xamarin iOS教程之显示和编辑文本

    Xamarin iOS教程之显示和编辑文本 Xamarin iOS显示和编辑文本 在一个应用程序中,文字是非常重要的.它就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些应用程序要表达的 ...

  3. 最详细在Windows安装Xamarin.iOS教程

    最详细在Windows安装Xamarin.iOS教程 来源:http://www.cnblogs.com/llyfe2006/articles/3098280.html 本文展示了如何设立Xamari ...

  4. Xamarin iOS教程之键盘的使用和设置

    Xamarin iOS教程之键盘的使用和设置 Xamarin iOS使用键盘 在文本框和文本视图中可以看到,当用户在触摸这些视图后,就会弹出键盘.本节将主要讲解键盘的输入类型定义.显示键盘时改变输入视 ...

  5. Xamarin iOS教程之视图显示图像

    Xamarin iOS教程之视图显示图像 Xamarin iOS显示图像 在主视图中显示一个图像,可以让开发者的应用程序变的更有趣,例如,在一些应用程序开始运行时,都会通过图像来显示此应用程序的玩法或 ...

  6. Xamarin iOS教程之添加和定制视图

    Xamarin iOS教程之添加和定制视图 Xamarin iOS用户界面——视图 在iPhone或者iPad中,用户看到的摸到的都是视图.视图是用户界面的重要组成元素.例如,想要让用户实现文本输入时 ...

  7. Xamarin iOS教程之申请付费开发者账号下载证书

    Xamarin iOS教程之申请付费开发者账号下载证书 Xamarin iOS使用真机测试应用程序 在讲解iOS Simulator时,已经提到了虽然iOS Simulator可以模仿真实的设备,但是 ...

  8. Xamarin iOS教程之编辑界面编写代码

    Xamarin iOS教程之编辑界面编写代码 Xamarin iOS的Interface Builder Interface Builder被称为编辑界面.它是一个虚拟的图形化设计工具,用来为iOS应 ...

  9. Xamarin iOS教程之自定义视图

    Xamarin iOS教程之自定义视图 Xamarin iOS自定义视图 工具栏中的视图在实际应用开发中用的很多,但是为了吸引用户的眼球,开发者可以做出一些自定义的视图. [示例2-33]以下将实现一 ...

随机推荐

  1. UML类图学习笔记

    http://note.youdao.com/noteshare?id=d5af220db7081dda73511fcb7b4da390

  2. 「Vue」父子组件之间的传值及调用方法

    a.父组件向子组件传值data(){},props数据区别data中的数据可读可写,是自己的数据props是个数组,中的数据是父组件传递过来的,只读不能写<login :dmsg='msg'&g ...

  3. HDU 3511 圆扫描线

    找最深的圆,输出层数 类似POJ 2932的做法 圆扫描线即可.这里要记录各个圆的层数,所以多加一个维护编号的就行了. /** @Date : 2017-10-18 18:16:52 * @FileN ...

  4. [iOS]深拷贝/浅拷贝区别

    来点鸡汤: // 所谓拷贝 就是在原有的对象的基础上产生一个新的副本对象.有两点原则: //   1. 改变原对象的属性和行为不会影响副本对象 //   2. 改变副本对象的属性和行为不会影响原对象 ...

  5. Oracle 基本操作符

    1.一般操作符 (1)!= 不等于 select empno,ename,job from scott.emp where job!='manager' (2)^= 不等于 select empno, ...

  6. linux常用运维命令【转】

    自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试! 1.查看有多少个IP访问: awk ...

  7. Tomcat优化步骤【转】

    一.Tomcat的缺省是多少,怎么修改 Tomcat的缺省端口号是8080.修改Tomcat端口号:1.找到Tomcat目录下的conf文件夹2.进入conf文件夹里面找到server.xml文件3. ...

  8. .NET C#错误:所生成项目的处理器框架“MSIL”与引用“wdapi_dotnet1021”的处理器架构“AMD64”不匹配

    .NET C#错误:所生成项目的处理器框架“MSIL”与引用“wdapi_dotnet1021”的处理器架构“AMD64”不匹配. 直接在项目右键属性->生成->x64. 即可解决

  9. ASP.NET应用技巧:非托管COM组件的使用

    众所周知,asp.net是基于通用语言运行库创建的,也就是所谓的托管执行环境.生成的代码称为托管代码.编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息.而我们编写的组件 ...

  10. JAVA 基础基本语法---常量与变量

    JAVA 基础基本语法---常量与变量 语法:计算机能够识别的语言的规则: 0. 基本语法 编写Java程序时,应注意以下几点: 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hel ...