文档章节

Xamarin iOS文本框视图

大学霸
 大学霸
发布于 2015/06/17 15:43
字数 1493
阅读 271
收藏 0
点赞 0
评论 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人!



© 著作权归作者所有

共有 人打赏支持
大学霸
粉丝 246
博文 841
码字总数 552470
作品 0
东城
程序员
从Xamarin.Essentials谈Xamarin库的封装

编者语:Xamarin在国内的推广还需要努力,其实这真的是移动端开发的一大福音,毕竟用一份代码的时间可以生成iOS/Android/Windows/Linux/macOS/Tizen多个平台,而且是原生的性能。Xamarin在B...

⋅ 05/10 ⋅ 0

iOS高仿微信、仪表盘、图片标注图片滤镜、高斯模糊、上拉加载、下拉刷新等源码

iOS精选源码 Swift-图片画框标注(http://www.code4app.com/thread-29884-1-1.html) Swift版的上拉加载, 下拉刷新控件(一句话集成, 超级易用)(http://www.code4app.com/thread-29885-1-1.html...

sunnyaigd ⋅ 05/22 ⋅ 0

input 输入框被软键盘遮挡问题

1.安卓手机 在软键盘被弹起来的时候输入框不被遮挡,支持性良好 2.ios手机 在软键盘被弹起来的时候输入框被遮挡,体验很不好 在经过多次实验发现,ios手机输入框被弹起的瞬间是不被遮挡的,过...

爱喝水的小熊 ⋅ 06/06 ⋅ 0

面试官自述:面向高级开发人员的iOS面试问题

当您准备进行技术性iOS面试时,了解您可能会询问哪些主题以及经验丰富的iOS开发人员期望什么是非常重要的。 这是许多硅谷公司用来衡量iOS候选人资历水平的一系列问题。 这些问题涉及iOS开发的...

菇哒微课 ⋅ 04/26 ⋅ 0

iOS基础深入补完计划--NSURLSession使用详解(附Demo)

目录 前言 API Demo 前言 本文主要是把NSURLSession以及NSURLSessionTask相关的代理方法全部整理了一下。 旨在大体了解在一个iOS网络请求中、一个任务究竟经理了什么。 而我们、又能做些什么...

kirito_song ⋅ 05/10 ⋅ 0

iOS一些代码的取巧写法总结(一)

一、 字典(NSDictionary)和JSON字符串(NSString)之间互转 二、打开摄像机作为背景 三、打开背光灯 四、状态栏和导航栏一些设置 五、切回app时、会有闪现、闪现一次主屏幕的现象 六、[UIAppl...

朝雨晚风 ⋅ 2016/12/05 ⋅ 0

【iOS采坑记录】Xcode run destination 中没有 iOS Simulators

如下图,没有红框中的选项: 初步推测是 Unity 的坑,想要正常显示 iOS Simulators,只要将 Build Settings > Supported Platform 由 "iphoneos" 改为 "iOS" 即可。如图:...

何三思 ⋅ 05/14 ⋅ 0

iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码

iOS精选源码 一款优秀的 聆听夜空FM 源码(http://www.code4app.com/thread-14546-1-1.html) zhPopupController 简单快捷弹出自定义视图(http://www.code4app.com/thread-14861-1-1.html) WHS......

sunnyaigd ⋅ 06/04 ⋅ 0

【AR】开始使用Vuforia开发iOS(2)

原 设置iOS开发环境 安装Vuforia iOS SDK 如何安装Vuforia iOS示例 编译并运行Vuforia iOS示例 支持iOS金属 iOS 64位迁移 设置iOS开发环境 适用于iOS的Vuforia引擎目前支持运行iOS 9及更高版...

lichong951 ⋅ 06/11 ⋅ 0

HDU ~ 6297 ~ CCPC直播 (模拟,输出格式控制)

思路:模拟就行了,注意Running和RTE的开头字母一样。 iomanip是I/O流控制头文件,就像printf的格式化输出一样。 以下是一些常用的: dec 置基数为10 相当于"%d" hex 置基数为16 相当于"%X" oc...

zscdst ⋅ 05/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 24分钟前 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 32分钟前 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 42分钟前 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 54分钟前 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 今天 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部