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

Xamarin iOS使用键盘

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

Xamarin iOS定制键盘的输入类型

键盘的类型不只一种,而是有很多种的。当用户要实现编辑一个联系人时,键盘就会随着所输入的内容不同而发生变化。例如当要输入联系人的电话号码时,键盘就变为数字键盘。在不同的地方使用不同类型的键盘,会使用户的操作变得简单。要定制键盘的显示类型其实很简单,就是要对文本框或者是文本视图的第二大属性进行设置。一般称第二大属性为“输入设置”,如图2.34所示。

 

图2.34  输入设置

在iOS 8.3中,可以显示的键盘类型如表2-10所示。

表2-10  键盘类型

【示例2-19】以下将使用代码对定义一个独特的键盘。具体步骤如下:

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

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

 

图2.35  主视图的效果

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

表2-11  设置视图

 

(3打开2-24ViewController.cs文件,编写代码,实现定制一个特殊的键盘。代码如下:

  • using System;
  • using System.Drawing;
  • using MonoTouch.Foundation;
  • using MonoTouch.UIKit;
  • namespace Application
  • {
  • public partial class __24ViewController : UIViewController
  • {
  • ……                                                                            //这里省略了视图控制器的构造方法和析构方法
  • #region View lifecycle
  • public override void ViewDidLoad ()
  • {
  • base.ViewDidLoad ();
  • // Perform any additional setup after loading the view, typically from a nib.
  •                    tf.KeyboardType = UIKeyboardType.Url;                                               //设置键盘的类型
  •                             tf.KeyboardAppearance = UIKeyboardAppearance.Dark;               //设置键盘的外观
  •                             tf.ReturnKeyType = UIReturnKeyType.Next;                                       //设置键盘的Return键
  • }
  • ……                                                                             //这里省略了视图加载和卸载前后的一些方法
  • #endregion
  • }
  • }

运行效果如图2.36所示。

 

图2.36  运行效果

Xamarin iOS显示键盘时改变输入视图的位置

有的时候,使用应用程序的用户遇到弹出的键盘挡住了输入的文本框或者文本视图,此时该如何解决呢,这就是下面将要讲解的内容。

【示例2-20】以下将在弹出键盘后,将挡住的文本框改变位置。具体步骤如下:

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

(2打开MainStoryboard.storyboard文件,将主视图的背景颜色设置为Scrollview Textured Background color。

(3打开2-7ViewController.cs文件,编写代码,实现在显示键盘时改变文本框视图的位置。代码如下:

  • using System;
  • using System.Drawing;
  • using MonoTouch.Foundation;
  • using MonoTouch.UIKit;
  • namespace Application
  • {
  • public partial class __7ViewController : UIViewController
  • {
  • private NSObject kbdWillShow, kbdDidHide;
  • UITextField  emailField= new UITextField ();
  • ……                                                //这里省略了视图控制器的构造方法和析构方法
  • #region View lifecycle
  • public override void ViewDidLoad ()
  • {
  • base.ViewDidLoad ();
  • // Perform any additional setup after loading the view, typically from a nib.
  • emailField.Frame = new RectangleF (10, 500, 300, 30);
  • emailField.BorderStyle = UITextBorderStyle.RoundedRect;
  • this.View.AddSubview (emailField);
  • //键盘将要显示时
  • kbdWillShow = UIKeyboard.Notifications.ObserveWillShow((s, e) => {
  • RectangleF kbdBounds = e.FrameEnd;
  • RectangleF textFrame = emailField.Frame;
  • textFrame.Y -= kbdBounds.Height;
  • emailField.Frame = textFrame;
  • } );
  • //键盘将要隐藏时
  • kbdDidHide = UIKeyboard.Notifications.ObserveDidHide((s, e) => {
  • RectangleF kbdBounds = e.FrameEnd;
  • RectangleF textFrame = emailField.Frame;
  • textFrame.Y += kbdBounds.Height;
  • emailField.Frame = textFrame;
  • } );
  • //触摸键盘上的return键
  • emailField.ShouldReturn = delegate(UITextField textField) {
  • return textField.ResignFirstResponder ();
  • } ;
  • }
  • ……                                       //这里省略了视图加载和卸载前后的一些方法
  • #endregion
  • }
  • }

运行效果如图2.37所示。

 

图2.37  运行效果

注意:当用户轻拍文本框时,弹出的键盘不可以挡住需要输入文本的文本框,这是每一个开发者的责任,以确保用户可以看到自已在文本框中究竟输入了什么。在这种情况下,我们需要在默认的通知中心添加一个观察者ObserveWillShow(键盘将要显示时的观察者)和ObserveWillShow(键盘将要隐藏时的观察者),代码如下:

  • this.kbdWillShow = UIKeyboard.Notifications.ObserveWillShow((s, e) => {
  • ……
  • } );
  • kbdDidHide = UIKeyboard.Notifications.ObserveDidHide((s, e) => {
  • ……
  • } );

通知中心是iOS的机制,专门供程序中不同类间的消息通信而设置的。正常情况下,它可以通过NSNotificationCenter.DefaultCenter进行访问。在Xamarin.iOS中提供了一些APIs,它们可以简化一些事情。在此示例中开发者会发现两个APIs的用法就是ObserveWillShow和ObserveDidHide。通过调用UIKeyboard.Notifications.ObserveWillShow,通知中心将会通知我们键盘即将要显示,同时会执行UIKeyboard.Notifications.ObserveWillShow中的程序。通用UIKeyboard.Notifications.ObserveDidHide,通知中心将会通知我们键盘即将要隐藏,同时会执行UIKeyboard.Notifications.ObserveDidHide中的程序。

Xamarin iOS为键盘添加工具栏

有的时候,为了让键盘的功能更为齐全,免不了要为它添加添加一个工具栏,此时需要使用到InputAccessoryView属性。

【示例2-21】以下就是为键盘添加工具栏,在工具栏中有一个“完成”的按钮,单击此按钮后,键盘就会隐藏。代码如下:

  • using System;
  • using System.Drawing;
  • using MonoTouch.Foundation;
  • using MonoTouch.UIKit;
  • namespace Application
  • {
  • public partial class __8ViewController : UIViewController
  • {
  • ……                                                         //这里省略了视图控制器的构造方法和析构方法
  • #region View lifecycle
  • public override void ViewDidLoad ()
  • {
  • base.ViewDidLoad ();
  • // Perform any additional setup after loading the view, typically from a nib.
  • //为主视图添加文本框对象
  • UITextField emailField=new UITextField();
  • emailField.Frame = new RectangleF (10, 100, 300, 30);
  • emailField.BorderStyle = UITextBorderStyle.RoundedRect;                         //设置文本框的边框
  • this.View.AddSubview (emailField);
  • emailField.KeyboardType = UIKeyboardType.EmailAddress;                //设置键盘的类型
  • //设置工具栏
  • UIToolbar toolHigh = new UIToolbar ();                                                       //实例化工具栏对象
  • toolHigh.SizeToFit();
  • toolHigh.BackgroundColor = UIColor.DarkGray;                                       //设置背景
  • //实例化栏按钮条目
  •          UIBarButtonItem doneHigh = new UIBarButtonItem("完成",UIBarButtonItemStyle.Done,
  •  (ss, ea) => {
  •                                                emailField.ResignFirstResponder();                                       //关闭键盘
  •                                      }
  •                             );
  • toolHigh.SetItems(new UIBarButtonItem[] { doneHigh }, true);          //为工具栏设置条目
  • emailField.InputAccessoryView = toolHigh;                                             //为键盘添加自定义视图
  • }
  • ……                                                                   //这里省略了视图加载和卸载前后的一些方法
  • #endregion
  • }
  • }

运行效果如图2.38所示。

 

图2.38  运行效果

Xamarin iOS退出键盘

本小节将讲解3种常用的退出键盘的方法。

1.使用键盘上的return

使用键盘上的return键退出键盘,我们在2.6.2小节的代码中提到了,代码如下。这里,需要使用到ShouldReturn()委托方法和ResignFirstResponder()方法。

  • emailField.ShouldReturn = delegate(UITextField textField) {
  • return textField.ResignFirstResponder ();
  • } ;

2.使用按钮实现触摸背景退出

通过按钮退出键盘我们也在2.6.3小节中提到了,代码如下,需要使用ResignFirstResponder方法。

  • UIBarButtonItem doneHigh = new UIBarButtonItem("完成",UIBarButtonItemStyle.Done,
  • (ss, ea) => {
  • emailField.ResignFirstResponder();                                 //关闭键盘
  • }
  • );

如果需要按钮实现触摸背景退出键盘,我们需要使用到UIButton。至于此按钮的响应类似于2.6.3小节中使用带的代码。

3.针对文本视图在菜单栏中退出键盘

最后一种退出键盘是针对文本视图的。在文本视图出现的菜单中添加一个菜单项,将此菜单项实现退出键盘的功能。

【示例2-22】下面将在文本视图的菜单栏中退出键盘。具体的操作步骤如下:

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

(2打开MainStoryboard.storyboard文件,拖动视图库中的文本框视图对象到主视图中,将此视图对象的Name设置为tf。

(3打开2-35ViewController.cs文件,编写代码,实现退出键盘的功能。代码如下:

  • using System;
  • using System.Drawing;
  • using MonoTouch.Foundation;
  • using MonoTouch.UIKit;
  • using MonoTouch.ObjCRuntime;
  • namespace Application
  • {
  • public partial class __35ViewController : UIViewController
  • {
  • ……
  • #region View lifecycle
  • public override void ViewDidLoad ()
  • {
  • base.ViewDidLoad ();
  • // Perform any additional setup after loading the view, typically from a nib.
  • //添加菜单按钮
  •          UIMenuItem item=new UIMenuItem("退出",new Selector("hide"));
  •                             UIMenuController menu = UIMenuController.SharedMenuController;
  •                             menu.MenuItems = new UIMenuItem[] {
  •                                      item
  •                             };
  • }
  • [Export("hide")]
  • //退出键盘
  • public void hide(){
  •                             tv.ResignFirstResponder ();
  •                    }
  • ……
  • #endregion
  • }
  • }

此时运行程序,会看到如图2.39所示的效果。

 

图2.39  运行效果

本文选自:Xamarin iOS开发实战大学霸内部资料,转载请注明出处,尊重技术尊重IT人!

Xamarin iOS教程之键盘的使用和设置的更多相关文章

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

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

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

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

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

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

  4. Xamarin iOS教程之使用按钮接接收用户输入

    Xamarin iOS教程之使用按钮接接收用户输入 Xamarin iOS使用按钮接接收用户输入 按钮是用户交互的最基础控件.即使是在iPhone或者iPad中,用户使用最多操作也是通过触摸实现点击. ...

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

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

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

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

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

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

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

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

  9. Xamarin iOS教程之警告视图

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

随机推荐

  1. np.random.choice方法

    np.random.choice方法 觉得有用的话,欢迎一起讨论相互学习~Follow Me def choice(a, size=None, replace=True, p=None) 表示从a中随 ...

  2. 转:iOS-生成Bundle包-引入bundle-使用bundle

    在我们使用第三方框架时,常常看到XXX.bundle的文件. 我们找到该文件,显示包内容,大致看到很多资源文件:图片.配置文本.XIB文件……   什么是Bundle文件? 简单理解,就是资源文件包. ...

  3. Intellij IDEA导入web项目详解(解决访问的404)

    开始时的首页 点击modules 点击modules界面的Paths 点击Libraries 选择lib文件 点击Facets 选择项目 这就是我404的主要原因,因为小白第一次使用idea 所以很疯 ...

  4. POJ - 2299 Ultra-QuickSort(归并排序)

    https://vjudge.net/problem/POJ-2299 题意 求对于给定的无序数组,求出经过最少多少次相邻元素的交换之后,可以使数组从小到大有序. 分析 很明显是求逆序对的数目,那就要 ...

  5. 洛谷P2326 AKN’s PPAP

    https://www.luogu.org/problemnew/show/P2326 按位贪心 找到最高位&1的数,确定次高位的时候只从最高位&1的数里选 此次类推 #include ...

  6. 使用mybatisgenerator 辅助工具逆向工程

    使用mybatisgenerator 辅助工具生成单表的dao层接口,mapper xml 文件以及实体类,复杂的还得人手动去编写哈...所以我也不觉得这玩意儿在项目简单情况下有什么鸟用... wha ...

  7. sql server查询某年某月有多少天

    sql语句如下: ),) date from (),,)+'-01' day) t1, ( ) t2 ),) ),,)+'%' 查询结果如下: 2017年2月共有28天,查询出28条记录.

  8. MongoDB 之 "$" 的奇妙用法 MongoDB - 5

    在MongoDB中有一个非常神奇的符号 "$" "$"  在 update 中 加上关键字 就 变成了 修改器 其实 "$" 字符 独立出现 ...

  9. Fiddler抓取HTTPS最全(强)攻略

    本文来自于柠檬班49期学员superman童鞋的学习笔记.希望对同样是测试萌新的你有帮助,如果觉得好,可以点个赞噢~ 对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler.可是在初学时, ...

  10. Three.js基础探寻三——透视投影照相机

    本篇主要介绍Three.js照相机中的透视投影照相机. 上一篇:正交投影照相机 5.透视投影照相机构造函数 透视投影照相机(Perspective Camera)的构造函数是: THREE.Persp ...