本话来介绍UIKit框架中的组件UITextField。

UItextField(文本框)和Label看起来看像,可是文本框是能够编辑的。在UI中使用文本框要注意。由于在模拟器上面输入文字是能够使用电脑键盘的。而在真机上。用户仅仅能使用虚拟键盘。所以要注意。另外文本框中的文字大小、颜色等等也是能够设置的,就和在Label中一样。

每次我们点击文本框開始输入内容的时候,文本框会成为页面上的first responder。这个时候虚拟键盘就会从底部滑出,配合我们的输入,就好像网页开发中的文本框获得了焦点一样。你能够用法becomeFirstResponder指定某个对象成为当前页面的first responder。假设要让键盘消失,我们仅仅须要让文本框又一次成为first responder,用法rsignFirstResponder。

在我们输入结束的时候,点击键盘上的Return键(当然。这个键显示的文字是能够编辑的)会触发代理的方法textFieldShouldReturn。通常你会在这种方法中写上sender.resignFirstResponder以关闭虚拟键盘。

当编辑结束后也就是上面说的textField又一次成为first responder时。会调用还有一个代理方法textFieldDidEndEditing。

UITextField也能够作为一个UI的控制器,就像button一样,我们能够通过button来触发target和action,也能够通过一个UITextField来触发一些action和target,仅仅只是触发的events和button是不同的。

以下来看一下键盘:

键盘出现是由于文本框向接口UITextInputTraits协议发送消息,这个协议是UITextField类遵循的。你能够使用协议中的属性来进行设置,比方Returnbutton显示的名称、密文输入等等。这些属性也能够在属性检查器中设置。

键盘滑出时可能会遮挡页面上的其它视图。我们须要让这些视图适应键盘的位置(尤其是文本框本身),为达到这个目的使用与键盘事件相关的NSNotification。之前我们已经接触过NSNotification了。如上例所看到的,在消息中心中接收这个NSNotification,然后在选择子相应的方法theKeyboardAppeared中捕获这个NSNotification然后从中提取userInfo中的信息进行相关处理。

以下是UITextField的一些其它属性,很的有趣

比方你能够设置在文字输入非常多的时候缩小字体以适应文本框的宽度。可是这个字体不能无限制缩小。假设adjustsFontSizeToFitSidth被设置为true,那么一定要设置minimumFontSize的尺寸。另外能够在文本框中能够增加一些辅助功能,比方说清空输入之类的。

【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框的更多相关文章

  1. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述

    首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户 ...

  2. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记2 Xcode、Auto Layout及MVC

    原文链接不知道在哪, 接着上一话来讲,上一话中讲到了MVC,那么MVC在IOS8开发中是如何应用的呢?Paul Hegarty老师给我们展示了一个计算器的Demo,首先新建一个工程,老师把AppDel ...

  3. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记19 为Demo添加手势

    在这一话中我们将应用上一话学到的知识来为Demo添加手势识别,首先添加一个缩放的功能,其次添加一个拖动功能,使得小人的表情可以随着我们的手指改变. 首先来添加一个缩放手势的识别器,我们来到FaceVi ...

  4. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记30 ScrollView Demo实战

    在上一话中我们创建了一个通过URL读取图片的Demo,这个Demo是不能拖动和缩放的.如今给它添加选项让它能够手动切换URL,并把图片加入到ScrollView中. 向Storyboard中拖入一个s ...

  5. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记3 Xcode、Auto Layout及MVC

    继续上一话中的计算器Demo.上一话讲到类必须被初始化.类中的属性也必须被初始化,所以你不能仅仅声明而不给它一个处置,那么问题来了,我们从storyboard中拖拽的@IBOutlet为什么仅仅有声明 ...

  6. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记38 Unwind Segue反向过渡

    之前我们接触过了segue,这是IOS中最主要的传递方式,今天来解说一下怎样进行反向的segue. 反向过渡的使用前提是发出过渡的MVC必须是由目标MVC直接或者间接正向过渡来的.反向过渡是唯一不会创 ...

  7. 【我们都爱Paul Hegarty】斯坦福大学IOS8公开组个人笔记28 ScrollView 幻灯片视图

    随着移动设备,iphone屏幕尺寸的限制.超过内容的屏幕大小为scrollview于,通过滑动来获得.scrollview滑动方向可以是也可以是横向垂直,scrollview可以嵌套,例如,纵向滑动s ...

  8. 斯坦福iOS7公开课11笔记及演示Demo&访问HTTPS链接下载数据

    这一节主要介绍UITableView以及iPad,Demo为从Flicker下载图片并显示,但是实际过程中发现需要FQ并使用HTTPS连接,所以这次用了两个Demo,一个是课程中的Demo,另一个是简 ...

  9. 斯坦福iOS7公开课10笔记及演示Demo

    这一节主要介绍了多线程中的串行队列以及滚动视图UIScrollView. 1 .多线程 这一节只是简单介绍了多线程的串行队列,即把任务加入线程队列后按顺序逐步执行. (1)目前iOS多线程提供的方法主 ...

随机推荐

  1. 使用IDEA在Maven中创建MyBatis逆向工程以及需要注意的问题(入门)

    逆向工程简介: mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml.pojo…),可以让程序员将更多的精力放在繁杂的业务逻 ...

  2. 模拟post提交

    模拟post提交 function post(URL, PARAMS) { var temp = document.createElement("form"); temp.acti ...

  3. nessus 漏洞扫描安装和使用

    介绍 Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件.总共有超过75,000个机构使用Nessus 作为扫描该机构电脑系统的软件.  软件特色 * 提供完整的电脑漏洞扫描服务, 并随时更 ...

  4. vue非父子组件间传参问题

    最近在使用vue进行开发,遇到了组件之间传参的问题,此处主要是针对非父子组件之间的传参问题进行总结,方法如下:一.如果两个组件用友共同的父组件,即 FatherComponent.vue代码 < ...

  5. 洛谷P5160 WD与循环

    我们看这段代码 int cnt = 0; for (int a_1 = 0; a_1 <= m; a_1++) { for (int a_2 = 0; a_1 + a_2 <= m; a_ ...

  6. Hadoop的datanode超时时间设置

    datanode进程死亡或者网络故障造成datanode无法与namenode通信, namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长. HDFS默认的超时时长为10 ...

  7. 【BZOJ 1218】 [HNOI2003]激光炸弹

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 一开始以为可以炸多次. 然后发现是一次. 那么久直接做个前缀和就好了 枚举正方形的左上角. 然后刚好和网格对齐的话. 肯定没有放在( ...

  8. Linux 进程间通信(IPC)

    Linux 进程间通信(IPC): Linux系统中除了进程和进程之间通信,我想大家也应该关注用户空间与内核空间是怎样通信的.例如说netlink等等. 除了传统进程间通信外像Socket通信也须要掌 ...

  9. hpuoj--1695--一道签到题(KMP)

    1695: 一道签到题 时间限制: 2 Sec  内存限制: 128 MB 提交: 72  解决: 36 [提交][状态][讨论版] 题目描述 我想说这是一道签到题,意思就是本次测试中最水的一道,不过 ...

  10. 38.angular的scope作用域

    转自:https://www.cnblogs.com/best/tag/Angular/ 1. Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带. S ...