Managing Text Fields and Text Views

管理UITextField和UITextView实例

UITextField和UITextView的实例拥有两个最主要的功能:展示文本和输入、编辑文本。许多程序的任务都和这些简单的目的有关,包括配置文本属性,访问文本内容,确认用户输入以及展示一些其它的视图(例如在uitextfield中添加标签按钮)。

UITextField和UITextView的代理负责以上所说的大部分任务,代理必须遵守UITextFieldDelegate和UITextViewDelegate协议,并且实现其中的一个或多个方法。协议中所有的方法都是可选的。为了能让程序调用这些代理方法,你必须用代码或者interface builder中设置代理。

向代理发送消息的顺序

在大多数情况下,当处于第一响应者状态的UITextField或者UITextView类的实例发生变化(或者即将发生变化)时,会发送一系列名字相似的消息他们的代理。当用户点击一个文本对象时,它会自动成为第一响应者,然后系统会弹出键盘,开始编辑那个文本对象。当用户点击了另外一个文本对象或者点击了结束编辑的按钮,当前的文本对象失去第一响应者状态。如果没有选中其它文本对象,系统会隐藏键盘,如果选中了其它的文本对象,它会成为第一响应者,并且系统会为它弹出键盘。

对于键盘退出的行为有两种行为:其一、在iPad上,当一个视图控制器通过“form sheet”的样式模态显示了它的视图,键盘一旦弹出便不会隐藏,除非用户点击隐藏按钮或者模态视图消息。这种做法的目的是位了避免用户在非常大的视图上移动时造成过度动画。另外一个情况是调用自定义的键盘,自定义键盘是通过自定义一个视图,并赋值给text view的inputView属性,用来替代系统键盘的。当存在自定义键盘时,即便当前文本对象是第一响应者,UIKit也回退出系统键盘,并根据开发者关于设置弹出类似键盘的键盘。

UITextField和UITextView实例向它们的代理发送消息的顺序如下:

1.当一个文本对象成为第一响应者之前- textFieldShouldBeginEdinting:(text field) 和 textViewShouldBeginEditing:(text view)

代理会确定是否当前文本对象应该成为第一响应者,默认返回值YES 允许成为第一响应者

2.在一个文本对象成为第一响应者之后- textFieldDidBeginEditing:(text field) 和 textViewDidBeginEditing:(text view).

代理会通过更新状态信息(例如,编辑的过程中在text view里显示一个视图)来响应这条消息

3.在编辑的过程中-各方面的

当用户输入和编辑文本的时候,文本对象会调用某些已经实现的代理方法,例如,当文本变化时,代理会收到一条 textViewDidChange:消息;当用户点击清除按钮时,代理会收到textFieldShouldClear:消息,并返回一个布尔类型的值用来决定是否文本应该被清除。

4.在一个文本对象即将失去第一响应者之前-textFieldShouldEndEditing:(text field) 和 textViewShouldEndEdinting:(text view)

代理实现这些方法最主要的原因是确认文本输入。比如当文本需要遵守一个固定格式时,代理可以确认输入的文本是否符合要求并返回对应的布尔值。

对于UITextField的实例,有一个相关的方法textFieldShouldReturn: 当用户点击了“return”键时,文本框会向代理发送这个消息询问是否应该放弃第一响应者

5.当文本框失去第一响应者之后-textFieldDidEndEditing:(text field) 和 textViewDidEditing:(text view).

代理可以通过实现这些方法来获得用户刚刚输入或编辑的文本内容。

其它非代理对象可以通过观察成为第一响应者的状态变化通知来获取文本的变化(但是,这些对象不能决定文本的状态)通知主要包括:UITextFieldTextDidBeginEditingNotification, UITextViewDidEndEditingNotification,UITextFieldTextDidChangeNotification.

无论代理还是监听通知,最主要的目的都是为了访问与文本框有关的文本内容。

See UITextField Class Reference and UITextView Class Reference to learn more about the notifications posts by these classes.

配置文本框和文本视图

。。。。待续

关于iOS中的文本操作-管理text fields 和 text views的更多相关文章

  1. 关于ios中的文本操作-简介

    来源:About Text Handling in iOS 官方文档 iOS平台为我们提供了许多在app中展示文本和让用户编辑文本的方式.同时,它也允许你在app视图中展示格式化的文本和网页内容.你可 ...

  2. 如何让IOS中的文本实现3D效果

    本转载至 http://bbs.aliyun.com/read/181991.html?spm=5176.7114037.1996646101.25.p0So7c&pos=9       zh ...

  3. iOS中引用计数内存管理机制分析

    在 iOS 中引用计数是内存的管理方式,虽然在 iOS5 版本中,已经支持了自动引用计数管理模式,但理解它的运行方式有助于我们了解程序的运行原理,有助于 debug 程序. 操作系统的内存管理分成堆和 ...

  4. iOS 中SQLite数据库操作

    在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...

  5. iOS中 UITextView文本视图 技术分享

    UITextView: 文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文. UITextField的用处多,UITextView的用法也不 ...

  6. iOS:iOS中的多控制器管理

    iOS中的控制器有三种创建方式: 1.通过storyboard创建 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@" ...

  7. QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData

    SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...

  8. python中的文本操作

    python如何进行文本操作 1.能调用方法的一定是对象,比如数值.字符串.列表.元组.字典,甚至文件也是对象,Python中一切皆为对象. str1 = 'hello' str2 = 'world' ...

  9. iOS中textbox文本框清除圆角

    在iOS.Mac safari中,所有的textbox, select, checkbox都会被强制美化为圆角.但在特殊情况下需要清除圆角时发现iOS中使用以下传统的css无效: border-rad ...

随机推荐

  1. 转载:Github 简明教程

    如果你是一枚Coder,但是你不知道Github,那么我觉的你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder,你只是一个Code搬运工. 但是你如果已经在读这篇文章了,我觉的你已经知道G ...

  2. Optimistic Offline Lock乐观离线锁

    通过冲突检测和(发生冲突时的)事务回滚,来防止并发业务事务中的冲突. 通常一个业务事务的执行,会跨越一系列的系统事务. 一旦超出了单个系统事务的范围,就不能仅依靠DB管理程序来保证数据一致性. 乐观离 ...

  3. JavaScript 全局

    JavaScript 全局 JavaScript 全局属性和方法可用于创建Javascript对象. JavaScript 全局属性 属性 描述 Infinity 代表正的无穷大的数值. NaN 指示 ...

  4. ArcGIS 坐标系统文件

    坐标是GIS数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确的坐标. ArcGIS自带了多种坐标系统,在${ArcGISHome}Coordinate Systems目录下可 ...

  5. 好书推荐:《Game Programming Patterns》

    在线阅读点这里: http://gameprogrammingpatterns.com/contents.html 这是一个总结讨论和反思游戏客户端game play开发常用设计模式的书. 游戏开发和 ...

  6. wordpress使用video.js与七牛云存储实现无广告视频分享应用

    video.js是一款极受欢迎的基于HTML5的开源WEB视频播放器,其充分利用了HTML5的视频支持特性,可以实现全平台的无视频插件播放功能,对于现在流行的手机.PAD等移动智能终端有极佳的应用体验 ...

  7. 如何在Ubuntu下使用TF/SD 卡制作Exynos 4412 u-boot启动盘

    /** ****************************************************************************** * @author    Maox ...

  8. sql简易的MRP资源分析

    写了个简易的MRP根据传进来的数据,进行上下级的判断,父表,子表 构思: 3张变量表,第一张用来存传进来的成品,这边对表做了循环就是成品是一样一样进去的,取成品表的第一行,将数据做父表和子表关联,取出 ...

  9. smarty安装及例子

    环境: smarty3.1.16 1.在http://www.smarty.net/download下载最新smarty包,window选择zips,linux下选择tar.gz.以windows为例 ...

  10. getchar(),gets(),scanf()的差异比较

    scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别.若想从键盘上输入字符串"hi hello",则应该使用gets()函数. gets可以接收空格:而sc ...