UITextFiled入门教程
1.基础
1.0 文本输入框的创建
// 方式1
let textField = UITextField(frame: CGRect(x:10, y:60, width:200, height:30))
// 方式2
let textField = UITextField()
textField.frame = CGRect(x:20,y:30,width:100,height:30)
//设置边框样式为圆角矩形
textField.borderStyle = UITextBorderStyle.roundedRect
self.view.addSubview(textField)
** borderStyle的作用是设置边框样式,由枚举UITextBorderStyle控制: **
| UITextBorderStyle属性 | 描述 |
|---|---|
none |
无边框 |
line |
直角矩形边界线 |
bezel |
有阴影的边框 |
roundedRect |
圆角矩形边框 |
1.1文本框基本配置
// 文本输入框的提示文字
textField.placeholder = "请输入相关信息"
// 文字大小超过文本框长度时自动缩小字号,而不是隐藏显示省略号
textField.adjustsFontSizeToFitWidth=true //当文字超出文本框宽度时,自动调整文字大小
textField.minimumFontSize=14 //最小可缩小的字号
// 水平/垂直对齐方式
/** 水平对齐 **/
textField.textAlignment = .right //水平右对齐
textField.textAlignment = .center //水平居中对齐
textField.textAlignment = .left //水平左对齐
/** 垂直对齐 **/
textField.contentVerticalAlignment = .top //垂直向上对齐
textField.contentVerticalAlignment = .center //垂直居中对齐
textField.contentVerticalAlignment = .bottom //垂直向下对齐
// 背景图片设置
textField.borderStyle = .none //先要去除边框样式
textField.background = UIImage(named:"background1");
// 清除按钮(输入框内右侧小叉)
textField.clearButtonMode = .whileEditing //编辑时出现清除按钮
textField.clearButtonMode = .unlessEditing //编辑时不出现,编辑后才出现清除按钮
textField.clearButtonMode = .always //一直显示清除按钮
// 设置文本框关联的键盘类型
textField.keyboardType = UIKeyboardType.numberPad
// 使文本框在界面打开时就获取焦点,并弹出输入键盘
textField.becomeFirstResponder()
// 使文本框失去焦点,并收回键盘
textField.resignFirstResponder()
// 设置键盘return键的样式
textField.returnKeyType = UIReturnKeyType.done //表示完成输入
textField.returnKeyType = UIReturnKeyType.go //表示完成输入,同时会跳到另一页
textField.returnKeyType = UIReturnKeyType.search //表示搜索
textField.returnKeyType = UIReturnKeyType.join //表示注册用户或添加数据
textField.returnKeyType = UIReturnKeyType.next //表示继续下一步
textField.returnKeyType = UIReturnKeyType.send //表示发送
// 输入/显示文本字体的颜色
textField.textColor = UIColor.cyan
// 文本框的字体大小设置
textField.font = UIFont.systemFont(ofSize: 14)
// 文本输入框的代理设置(遵守UITextFieldDelegate协议)
textField.delegate = self
// 输入框的背景颜色
text.backgroundColor = [UIColor whiteColor];
//设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉 ~~~
-
autocorrectionType的作用是设置时候开启文字自动修复功能,这个貌似只对英文有效,有兴趣的可以试一下,由UITextAutocorrectionType控制,有三个值:default、yes、no -
returnType属性用来控制键盘返回键的样式(只能控制样式,不能修改方法,修改方法可以去代理中设置),通过枚举UIReturnKeyType控制:UIReturnKeyType属性 描述 default默认,标有Return go标有Go的按钮 google标有Google的按钮 next标有Next的按钮,中文键盘是'下一步' route标有Route的按钮 search标有Search的按钮,中文键盘是'搜索' send标有Send的按钮,中文键盘是'发送' yahoo标有Yahoo!的按钮 done标有Done的按钮,中文键盘是‘完成’ emergencyCall紧急呼叫按钮 continue标有Continue的按钮,中文键盘是‘继续’ -
clearButtonMode的作用是控制右侧清除按钮什么时候显示,由枚举** UITextFieldViewMode**控制:UITextFieldViewMode属性 描述 never从不出现 whileEditing开始编辑时出现 unlessEditing除了编辑外都出现 always一直出现 -
keyboardType属性的作用是控制键盘的显示样式,由枚举UIKeyboardType控制:UIKeyboardType属性 描述 default默认键盘:支持所有字符 asciiCapable支持ASCII的默认键盘 numbersAndPunctuation标准电话键盘,支持+*#等符号 URLURL键盘,有.com按钮;只支持URL字符 numberPad数字键盘 phonePad电话键盘 namePhonePad电话键盘,也支持输入人名字 emailAddress用于输入电子邮件地址的键盘 asciiCapableNumberPad支持ASCII的数字键盘 decimalPad带‘.’的数字键盘 twitter功能齐全键盘,类似asciiCapable webSearch带有面向url的附加的默认键盘类型 -
keyboardAppearance,定义的是键盘的样式,由枚举UIKeyboardAppearance控制:UIKeyboardAppearance属性 描述 default白色,这个字段是为了兼容以前的版本 dark黑色 light白色 alert黑色,这个字段是为了兼容以前的版本
** UITextField的浮动视图(Overlay view)**
例如微信中的添加银行卡页面,输入框右面的两个按钮,就是将按钮放在UITextField的rightView中。这样就能将UITextField和UIButton很好的结合在一起。
textField.leftViewMode = .always
textField.rightViewMode = .always
let leftButton = UIButton(type: .infoDark)
leftButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
textField.leftView = leftButton
let rightButton = UIButton(type: .contactAdd)
rightButton.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
textField.rightView = rightButton
1.2 代理方法
** 键盘return键的响应 **
import UIKit
class ViewController: UIViewController,UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let textField = UITextField(frame: CGRect(x:10,y:160,width:200,height:30))
//设置边框样式为圆角矩形
textField.borderStyle = UITextBorderStyle.roundedRect
textField.returnKeyType = UIReturnKeyType.done
textField.delegate=self
self.view.addSubview(textField)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
//收起键盘
textField.resignFirstResponder()
//打印出文本框中的值
print(textField.text)
return true;
}
}
** 关闭键盘的两种方式 **
// 方法一 对单个的UITextField调用resignFirstResponder方法, 使其失去第一响应者
textfiled.resignFirstResponder()
// 方法二 对UIViewController,重写touchesBegan, 并调用endEditing方法
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
view.endEditing(true)
}
** 代理方法 **
//当输入改变时调用的方法
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
print(string)
return true
}
//textField已经进入编辑状态时调用的方法
func textFieldDidBeginEditing(_ textField: UITextField) {
print("didBegin")
}
//结束编辑状态时调用的方法
func textFieldDidEndEditing(_ textField: UITextField) {
print("didEnd")
}
//将要进入编辑状态时调用的方法
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
print("shouldBegin")
return true
}
//将要结束编辑状态时调用的方法
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
print("shouldEnd")
return true
}
//当点击删除按钮时触发的方法
func textFieldShouldClear(_ textField: UITextField) -> Bool {
return false
}
//点击return键触发的方法
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
view.endEditing(true)
}






网友评论