Swift - 文本输入框(UITextField)的用法
(本文代码已升级至Swift4)
圆角矩形边框样例:
1,文本框的创建,有如下几个样式:
- UITextBorderStyle.none:无边框
- UITextBorderStyle.line:直线边框
- UITextBorderStyle.roundedRect:圆角矩形边框
- UITextBorderStyle.bezel:边线+阴影
let textField = UITextField(frame: CGRect(x:10, y:60, width:200, height:30)) //设置边框样式为圆角矩形 textField.borderStyle = UITextBorderStyle.roundedRect self.view.addSubview(textField)
2,修改边框颜色、粗细、圆角半径
let textField = UITextField(frame: CGRect(x:10, y:60, width:200, height:30)) //设置边框样式为圆角矩形 textField.borderStyle = UITextBorderStyle.roundedRect self.view.addSubview(textField) //修改圆角半径的话需要将masksToBounds设为true textField.layer.masksToBounds = true textField.layer.cornerRadius = 12.0 //圆角半径 textField.layer.borderWidth = 2.0 //边框粗细 textField.layer.borderColor = UIColor.red.cgColor //边框颜色
3,文本框提示文字
textField.placeholder="请输入用户名"
4,文字大小超过文本框长度时自动缩小字号,而不是隐藏显示省略号
textField.adjustsFontSizeToFitWidth=true //当文字超出文本框宽度时,自动调整文字大小 textField.minimumFontSize=14 //最小可缩小的字号
5,水平/垂直对齐方式
/** 水平对齐 **/ textField.textAlignment = .right //水平右对齐 textField.textAlignment = .center //水平居中对齐 textField.textAlignment = .left //水平左对齐 /** 垂直对齐 **/ textField.contentVerticalAlignment = .top //垂直向上对齐 textField.contentVerticalAlignment = .center //垂直居中对齐 textField.contentVerticalAlignment = .bottom //垂直向下对齐
6,背景图片设置
textField.borderStyle = .none //先要去除边框样式 textField.background = UIImage(named:"background1");
7,清除按钮(输入框内右侧小叉)
textField.clearButtonMode = .whileEditing //编辑时出现清除按钮 textField.clearButtonMode = .unlessEditing //编辑时不出现,编辑后才出现清除按钮 textField.clearButtonMode = .always //一直显示清除按钮
8,密码输入框
textField.isSecureTextEntry = true //输入内容会显示成小黑点
9,设置文本框关联的键盘类型
- Default:系统默认的虚拟键盘
- ASCII Capable:显示英文字母的虚拟键盘
- Numbers and Punctuation:显示数字和标点的虚拟键盘
- URL:显示便于输入url网址的虚拟键盘
- Number Pad:显示便于输入数字的虚拟键盘
- Phone Pad:显示便于拨号呼叫的虚拟键盘
- Name Phone Pad:显示便于聊天拨号的虚拟键盘
- Email Address:显示便于输入Email的虚拟键盘
- Decimal Pad:显示用于输入数字和小数点的虚拟键盘
- Twitter:显示方便些Twitter的虚拟键盘
- Web Search:显示便于在网页上书写的虚拟键盘
textField.keyboardType = UIKeyboardType.numberPad
10,使文本框在界面打开时就获取焦点,并弹出输入键盘
textField.becomeFirstResponder()
11,使文本框失去焦点,并收回键盘
textField.resignFirstResponder()
12,设置键盘 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 //表示发送以发送样式(send)为例:
13,键盘 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 } }
非常好的教程,谢谢老大
你好,请问如何存储用户在输入框里输入的字符串呢?例如用户注册时输入完密码,按一个按钮会存储用户输入的密码为字符串类型,然后可以在其他地方调用。
swift 输入框 没有密码输入属性?
你好,我想问一下。假如我不想让这个键盘一到这个界面就打开,我想让用户点一下输入框再打开键盘的话应该怎么办呢?
textField.keyboardType = .NumberPad
textField.returnKeyType = .Done
请问 为什么弹出键盘 不显示return键
航哥,设置textField.keyboardType为Number Pad或Decimal Pad时在模拟器中运行(未真机测试)一直报如下警告(其它keyboardType没试过,部分未报):
Number Pad:Can't find keyplane that supports type 4 for keyboard iPhone-Portrait-NumberPad; using 563160167_Portrait_iPhone-Simple-Pad_Default
Decimal Pad:Can't find keyplane that supports type 8 for keyboard iPhone-Portrait-DecimalPad; using 4131139949_Portrait_iPhone-Simple-Pad_Default
怎么破?
XCode版本:Version 7.3.1 (7D1014)
模拟器版本:Version 9.3 (SimulatorApp-645.9 CoreSimulator-209.19)
Ps:模拟器中Hardware->Keyboard中的选项不管勾选与否都会出现该警告!
URL:显示便于输入数字的虚拟键盘
Number Pad:显示便于输入数字的虚拟键盘
第7点中URL项写错了
如何设置随着键盘升高 不被键盘挡住
var str:NSString!=""
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if (str as String).characters.count>=0
{
if range.length>0
{
str=str.substringWithRange(NSMakeRange(0, str.length-1))
}else
{
var myStr=NSMutableString(string: str)
myStr.appendString(string)
str=myStr as NSString
}
}
let label=self.view.viewWithTag(10) as! UILabel
label.text="您的输入是:"+(str as String)
return true;
}
航哥您好,上面的textField代理方法,怎么才可以准确的判断str的长度,我试过用N�SString下的str.length和String下的(str as String).characters.count都不能准确,有时候退格时会崩溃
运行时出现breakpoint4.1,读取输入的东西的时候会出现signal SIGABRT,怎么解决