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. PHP使用COM 获取RTF内容

    1. 需要在APP服务器上安装Office 2. 可能需要创建文件夹:Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop 3. 可能需要设 ...

  2. GForms 快速入门指南

    本文旨在帮助您快速安装.创建及运行GForms应用. 1.   启动GForms Eclipse 如果您没有GForms安装介质,请到如下地址:http://yun. baidu .com/s/1bn ...

  3. 隐马尔科夫模型及Viterbi算法的应用

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4335810.html 一个例子: 韦小宝使用骰子进行游戏,他有两种骰子一种正常的骰子,还有一 ...

  4. Source Insight建工程之Kernel

     不管你是从事于Linux内核工作还是出于兴趣爱好,Linux内核源码都是非常好的学习资源.意味着就要经常的和内核源码大交道,那么软件工具就是少不了的.在Windows系统上确实有着许多好用的软件 ...

  5. git 合并本地代码到分支

    本地代码合并到dev分支 在local分支提交git add .git commit -m "playbuy" 切换到dev分支git checkout devgit pull合并 ...

  6. php下载文件的代码示例

    php下载文件的代码示例,需要的朋友可以参考下 <?php  $file = 'monkey.gif';  if (file_exists($file)) {  header('Content- ...

  7. jquery的相对父元素和相对文档定位示例代码

    在开发jquery时候经常需要用到定位,有相对父元素定位和相对文档定位,本文为此总结下,有需要的朋友可以参考下 在开发jquery时候经常需要用到定位,这里概括两种定位: 1.相对父元素定位: $(& ...

  8. Rewrite规则简介

    Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式.如果要想用到rewrite模块,必须先 ...

  9. 用Redis bitmap统计活跃用户、留存

    Spool的开发者博客,描述了Spool利用Redis的bitmaps相关的操作,进行网站活跃用户统计工作. 原文:http://blog.getspool.com/2011/11/29/fast-e ...

  10. 博主教你制作类似9patch效果的iOS图片拉伸

    下面张图片,本来是设计来做按钮背景的:   button.png,尺寸为:24x60 现在我们把它用作为按钮背景,按钮尺寸是150x50: // 得到view的尺寸 CGSize viewSize = ...