文档章节

Xamarin iOS文本框视图

大学霸
 大学霸
发布于 2015/06/17 15:43
字数 1493
阅读 288
收藏 0

Xamarin iOS文本框视图

与标签视图不同,文本框视图(一般使用UITextField类实现)可以接收用户的文本输入,并进行显示。

【示例2-16】以下将使用文本框来实现QQ登录界面的效果。具体步骤如下:

1创建一个Single View Application类型的工程,命名为2-5

2打开MainStoryboard.storyboard文件,对主视图进行设置。效果如图2.30所示。

2.30  主视图

需要添加的视图以及设置如表2-8所示。

2-8  设置主视图

3打开2-5ViewController.cs文件,编写代码,实现QQ登录界面的功能。代码如下:

  • using System;

  • using System.Drawing;

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



© 著作权归作者所有

共有 人打赏支持
大学霸
粉丝 257
博文 872
码字总数 544782
作品 0
东城
程序员
私信 提问
Xamarin iOS教程之键盘的使用和设置

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

大学霸
2015/06/19
0
0
Xamarin iOS教程之添加和定制视图

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

大学霸
2015/06/16
0
0
Xamarin iOS教程之警告视图

Xamarin iOS教程之警告视图 Xamarin iOS警告视图 如果需要向用户显示一条非常重要的消息时,警告视图(UIAlertView类)就可以派上用场了。它的功能是把需要注意的信息显示给用户。一般显示一...

大学霸
2015/06/23
0
0
【书坊赠书福利——第二期】《iOS 8开发指南》

本周是人邮IT书坊赠书的第二期,第一期参与度极高,微信君在此感谢你们的支持,第一期获奖赠书已全部寄出。 本周赠品 本周,微信君给大家推荐@人民邮电出版社-信息技术分社 刚刚上架的新书《...

生气的散人
2014/09/23
371
0
Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序

Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序。自从Xamarin问世后,C#的作用就发生了很大的变化。它不仅可以编写关于Windows...

大学霸
2014/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【58沈剑 架构师之路】1分钟了解MyISAM与InnoDB的索引差异

《数据库索引,到底是什么做的?》介绍了B+树,它是一种非常适合用来做数据库索引的数据结构: (1)很适合磁盘存储,能够充分利用局部性原理,磁盘预读; (2)很低的树高度,能够存储大量数据;...

张锦飞
6分钟前
1
0
代码优化----使用builder模式构造对象

看《effective java》的时候,创建对象章节提到使用builder模式来创建对象。觉得非常好用,做一个记录。以后应该就会这么写啦~~~~~~ 对于一个有很多属性的类,在为属性赋值时,通常会用到两种...

wuyiyi
7分钟前
2
0
一文带你看懂cookie,面试前端不用愁

本文由云+社区发表 在前端面试中,有一个必问的问题:请你谈谈cookie和localStorage有什么区别啊? localStorage是H5中的一种浏览器本地存储方式,而实际上,cookie本身并不是用来做服务器存...

腾讯云加社区
8分钟前
0
0
随行付微服务测试之接口测试和契约测试

背景 日常开发过程中,项目的接口通常由服务提供方约定和提供,微服务模式下接口被多个消费者调用更是常态,那么提供方接口的变更如何快速、高效、无遗漏的通知给消费者呢?另外,当一个ser...

马力-随行付
9分钟前
1
0
为什么Python是2019最值得学的编程语言?

对于那些从来没有学习编程小伙伴,Python 是最好的选择之一, Python 是一种清晰的语言,用缩进来表示程序的嵌套关系可谓是一种创举,把过去软性的编程风格升级为硬性的语法规定。再不需要在...

糖宝lsh
9分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部