概览
UITextField 作为可编辑的文本控件,它可以帮助开发者收集通过键盘输入的文本内容。键盘的输入样式是支持配置的:文本、邮箱、数字、是否加密(密码输入的场景)、键盘的return 按钮样式等等。由于UITextField 是继承于 UIControl,所以它的交互我们可以通过 target-action的方式来处理,当然UITextFieldDelegate
也会告诉我们编辑时的各种变更事件。
此外,对于日常的输入框场景,我们可能还需要在输入框的左右提供一些快捷操作的按钮,比如右侧的清空按钮,此时我们可以通过设置UITextField的 leftView Or RightView。
let overlayButton = UIButton(type: .custom)
let bookmarkImage = UIImage(systemName: "bookmark")
overlayButton.setImage(bookmarkImage, for: .normal)
overlayButton.addTarget(self, action: #selector(displayBookmarks),
for: .touchUpInside)
overlayButton.sizeToFit()
// Assign the overlay button to the text field
textField.leftView = overlayButton
textField.leftViewMode = .always
展示和隐藏键盘
当一个UITextField 变成第一响应者时,系统会自动弹起键盘,即调用becomeFirstResponder
,与之对应的 调用 resignFirstResponder
可以收起键盘。实际的研发中,我们也可以通过UIWindow
的 endEdit
方法在全局的任意地方快捷的收起键盘。
Note: 键盘的弹出及收起对应的各种通知也可能需要我们去处理,因为键盘弹出时可能会遮盖我们的页面。键盘的相关通知这里就不再赘述了,有兴趣的同学可以自行查询
输入内容及配置
格式化输入内容一般通过设置NSAttributedString
的方式,比如常见的 文本的Font、颜色、或是自定义占位文字的样式。对于一些特殊的场景,比如需要配置输入框的截断方式为永远不展示省略号(正常的输入框,持续输入时即使超出控件的最大宽度,也会自动向左移动,不会展示省略号,当时退出第一响应者及失去焦点时,输入框自动变成带有省略号的截断模式)。
这里还有一些非常实用的配置项:
adjustsFontSizeToFitWidth
,通过减少字号的方式来自适应宽度以便尽可能多的展示内容。
clearsOnBeginEditing
开始输入时 清空旧的内容 (这里还有个 clearsOnInsertion
)
borderStyle
配置输入框的 边框样式
inputView
通过自定义键盘的 inputView 的方式,来变更当 该TextField 变成第一响应者时弹起的键盘的样式
markedTextRange
高亮的文本(可用于 中文输入时判断是否处于拼音输入时的高亮状态)
UITextFieldDelegate
使用 UITextField 的场景时常需要我们对输入的内容进行校验,或是对整个编辑输入的过程进行管理,此时就需要我们对UITextFieldDelegate 进行深入研究。常见的场景包括 限制用户输入文本的长度,输入时可能产生的提示等等。
全部的代理方法可以查看:UITextFieldDelegate
iOS 分词处理
在输入框作为搜索的场景中,我们时常需要对输入的内容进行分词处理。具体的代码参考:iOS 分词处理
网友评论