iOS 控件之 Swift UITextField

[中文教程]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
查看查看297 回复回复2 收藏收藏 分享淘帖 转播转播 分享分享 微信
查看: 297|回复: 2
收起左侧

[中文教程] iOS 控件之 Swift UITextField

[复制链接]
1起来 发表于 2016-9-12 11:26:08 | 显示全部楼层 |阅读模式
快来登录
获取最新的苹果动态资讯
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
UITextField,文本框控件,用于处理用户输入的文本,只能输入单行,不能回车换行。使用文本框输入文本时,会弹出键盘让用户输入信息。本节主要讲解文本的创建和常用属性,以及键盘相关的知识。

iOS 控件之 Swift UITextField 2

iOS 控件之 Swift UITextField - 敏捷大拇指 - iOS 控件之 Swift UITextField 2





1、初始化 UITextField

[Swift] 纯文本查看 复制代码
let textField = UITextField.init(frame: CGRectMake(10, 100, 300, 40))





2、文本框常用属性

[Swift] 纯文本查看 复制代码
public var placeholder: String?     // 设置占位符文本
public var text: String?     // 设置文本
public var attributedText: NSAttributedString?     //设置富文本
public var textColor: UIColor?     // 文字颜色
public var font: UIFont?     // 文字字体
optional public var secureTextEntry: Bool { get set }     // 密码模式
public var backgroundColor: UIColor?     // 背景颜色
public var background: UIImage?     // 背景图片
public var attributedPlaceholder: NSAttributedString?     // 富文本占位符
public var minimumFontSize: CGFloat     //最小字体
public var adjustsFontSizeToFitWidth: Bool     // 文本内容自动适应标签大小,默认是false
public var enabled: Bool      // 文本框是否可用
public var clearsOnBeginEditing: Bool      // 开始输入时,清空文本框原有内容
public var allowsEditingTextAttributes: Bool      // 开始输入时,清空文本框原有内容
public var defaultTextAttributes: [String : AnyObject]     // 文本默认属性
public func becomeFirstResponder() -> Bool      // 成为第一响应者,光标定位到该文本框
public func resignFirstResponder() -> Bool      // 取消光标,释放键盘

/**
 * None             不自动大写 
 * Words            单词首字母大写 
 * Sentences        句子的首字母大写 
 * AllCharacters    所有字母都大写
 */
optional public var autocapitalizationType: UITextAutocapitalizationType { get set }     // 首字母是否大写

/**
 * Never * WhileEditing     编辑时显示 
 * UnlessEditing            结束编辑时显示 
 * Always                   一直显示
 */
public var leftViewMode: UITextFieldViewMode     // 设置左视图风格
public var leftView: UIView?      // 设置左视图(右边一样)

/**
 * Never            不显示请求按钮 
 * WhileEditing     编辑时才出现清除按钮
 * UnlessEditing    完成编辑后才出现按钮
 * Always           一直都显示清除按钮
 */
public var clearButtonMode: UITextFieldViewMode      // 设置删除效果(文本框输入内容时,显示清除按钮)

/**
 * Left        左对齐
 * Center      居中
 * Right       右对齐
 * Justified   最后一行自然对齐
 * Natural     默认对齐脚本
 */
public var textAlignment: NSTextAlignment     // 对齐方式

/**
 * Center   居中
 * Top      向上对齐
 * Bottom   向下对齐
 * Fill     填充
 * 注:单词太长,可以简写成 .Tope
 */ 
public var contentVerticalAlignment: UIControlContentVerticalAlignment      // 设置垂直对齐方式

/**
 * None         无边框
 * Line         方形黑色边框
 * Bezel        凹形灰色边框
 * RoundedRect  圆形
 */     
public var borderStyle: UITextBorderStyle      // 设置文本框样式





3、文本框代理

UITextField所有代理方法都是optional属性,即可选实现的,在使用中可以不实现。

下面我们在注释里面介绍每个方法的功能,首先确定ViewController使用UITextFieldDelegate,指定textField的delegate是本类实现的,代码如下:

[Swift] 纯文本查看 复制代码
textField.delegate = self

// 编辑开始前调用,返回false时,编辑将不会开始
optionalpublicfunc textFieldShouldBeginEditing(textField: UITextField) -> Bool

// 编辑开始后调用
optionalpublicfunc textFieldDidBeginEditing(textField: UITextField)

// 编辑结束前调用,此时返回false,编辑将不会结束
optionalpublicfunc textFieldShouldEndEditing(textField: UITextField) -> Bool

// 编辑结束后调用
optionalpublicfunc textFieldDidEndEditing(textField: UITextField)

// 文本修改前调用,range为改变范围,string中传入修改后的字符串,此时返回false,修改将不会被执行
optionalpublicfunc textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool

// 文本框中清除按钮点击时调用,此时返回true将清除内容
optionalpublicfunc textFieldShouldClear(textField: UITextField) -> Bool

// 键盘上 return 健被触摸后调用
optionalpublicfunc textFieldShouldReturn(textField: UITextField) -> Bool



iOS 控件之 Swift UITextField 1

iOS 控件之 Swift UITextField - 敏捷大拇指 - iOS 控件之 Swift UITextField 1





4、文本框状态监听

找到UITextField头文件,可以看到,UITextField具有三个通知类型:

[Swift] 纯文本查看 复制代码
// 文本框开始编辑时触发
publiclet UITextFieldTextDidBeginEditingNotification: String

// 文本框编辑结束时触发
publiclet UITextFieldTextDidEndEditingNotification: String

// 文本框内容改变时触发
publiclet UITextFieldTextDidChangeNotification: String

// 示例通知的使用方法
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.textDidBeginEditing), name: UITextFieldTextDidBeginEditingNotification, object: nil)

func textDidBeginEditing() {
    print("开始输入文本")
}





5、键盘知识

文本框触发后,就会弹出虚拟键盘,以便用户输入信息。单击文本框是显示键位的最简单方法。在模拟器中如果单击文本框没有出现键盘,那是因为Xcode7.2中的模拟器默认Xcode使用计算机键盘作为外接键盘,不再弹出虚拟键盘,如果设置了文本框的inputAccessoryView,就会只弹出inputAccessoryView,而不会弹出键盘。

只需要在模拟器中的菜单中找到Hardware—>Keyboard,取消勾选Connect Hardware Keyboard(快捷键shift+command+k)即可。

[Swift] 纯文本查看 复制代码
/**
 * Default  默认外观
 * Dark     深灰石墨色
 * Light    浅灰色
 */
optionalpublicvar keyboardAppearance: UIKeyboardAppearance { getset }     // 设置键盘外观

/**
 * Default          灰色默认按钮,标有return
 * Go               标有Go的蓝色按钮
 * Google           标有Google的蓝色按钮
 * Join             标有Join的蓝色按钮
 * Next             标有Next的蓝色按钮
 * Route            标有Route的蓝色按钮
 * Search           标有Search的蓝色按钮
 * Send             标有Send的蓝色按钮
 * Yahoo            标有Yahoo的蓝色按钮
 * Done             标有Done的蓝色按钮
 * EmergencyCall    紧急呼叫按钮
 * Continue         标有Continue的灰色按钮(iOS9.0)
 */
optional public var returnKeyType: UIReturnKeyType { get set }  // 设置键盘完成的按钮样式





注:本文整理自《Swift语言实战精讲(第2版)》




作者:兔小七


都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。

回帖是一种美德,也是对楼主发帖的尊重和支持。

*声明:敏捷大拇指是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,敏捷大拇指将保留所有法律权益。如有疑问或建议,邮件至marketing@swifthumb.com

*联系:微信公众平台:“swifthumb” / 腾讯微博:@swifthumb / 新浪微博:@swifthumb / 官方QQ一群:343549891(满) / 官方QQ二群:245285613 ,需要报上用户名才会被同意进群,请先注册敏捷大拇指

嗯,不错!期待更多好内容,支持一把:
支持敏捷大拇指,用支付宝支付10.24元 支持敏捷大拇指,用微信支付10.24元

评分

参与人数 1金钱 +10 收起 理由
Anewczs + 10 推送上首页了~分享到朋友圈微博QQ空间吧~.

查看全部评分

电音之王 发表于 2016-9-13 00:14:29 | 显示全部楼层
整理而已
代码买卖 发表于 2016-9-19 16:42:08 | 显示全部楼层
还没掌握好delegate,代理究竟是个神马东西?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

做任务,领红包。
我要发帖

分享扩散

都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的金钱积分奖励
热门推荐

合作伙伴

Swift小苹果

  • 北京治世天下科技有限公司
  • ©2014-2016 敏捷大拇指
  • 京ICP备14029482号
  • Powered by Discuz! X3.1 Licensed
  • swifthumb Wechat Code
  •   
快速回复 返回顶部 返回列表