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. C语言复习---迭代法,牛顿迭代法,二分法求根

    一:用迭代法求 x=√a.求平方根的迭代公式为:X(n+1)=(Xn+a/Xn) /2. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> ...

  2. C#实现物联网系统温度解析的函数(支持补码)

    基于物联网协议上传数据,其中温度占两个字节,如01 27,表示温度值为29.7.温度负值为补码(也就是温度值为有符号数),例如0XFFFF值为负1(-0.1度). 针对补码要求,修改数据解析函数如下: ...

  3. MySQL和Sql Server的sql语句区别

    1.自增长列的插入:SQLServer中可以不为自动增长列插入值,MySQL中需要为自动增长列插入值. 2.获取当前时间函数:SQLServer写法:getdate()MySQL写法:now() 3. ...

  4. win10内建子系统Linux

    从cmd中下载linux和linux终端安装程序一样 最新要从商店购买(当然是免费) ubuntu openSUSE SUSE 3个 创建用户

  5. python AjaxSpider 代码演示

    import re # 引入正则表达式 import json # 引入 json import pymongo # 引入mongo数据库 import requests # 引入HTTP请求协议 f ...

  6. 【两分钟视频教程】如何使用myeclipse在mac本机运行iOS配套的服务器

    如何使用myeclipse在mac本机运行iOS配套的服务器  

  7. Java实现去火柴游戏

    package com.gh.p10; /** * Created by Lenovo on 2014/12/10. */ import java.util.Random; import java.u ...

  8. oracel回收站清理

    从powerdesigner中往oracle中导入表,出现了很多类似“BIN$Z35FPY7eFZDgUKjAC94NkA==$0 ”这样的表名, 原因是删除表的时候没有彻底的删除表,而是把表放入回收 ...

  9. win10 安装IIS说明操作

    1.点左下角的Windows,所有应用,找到Windows系统,打开控制面板. 2.进入控制面板之后点击程序,可能你的控制面板和图片里的不太一样,不过没关系,找到程序两个字点进去就行. 3.接下来,在 ...

  10. IntelliJ IDEA 中安装junit插件

    1.在Intellij IDEA 中安装了 Junit,TestNG插件,首先检查一下intellij IDEA 是否在安装时默认安装了这两个插件,检查方法 打开 settings -->Plu ...