swift之UITextField用法详解

GitHub:github.com/jixiang0903/swift-UITextField

override func viewDidLoad() {

super.viewDidLoad()

//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

//字体属性设置

textField.textColor = UIColor.black

textField.font = UIFont(name:"GillSans",size:15)

textField.textAlignment = NSTextAlignment.left

/** 垂直对齐 **/

//textField.contentVerticalAlignment = .top  //垂直向上对齐

textField.contentVerticalAlignment = .center  //垂直居中对齐

//textField.contentVerticalAlignment = .bottom  //垂直向下对齐

//文本框提示文字

textField.placeholder = "请输入文字"

//明文显示

textField.isSecureTextEntry = false

//光标颜色

textField.tintColor = UIColor.green

//文字大小超过文本框长度时自动缩小字号,而不是隐藏显示省略号

//textField.adjustsFontSizeToFitWidth = true//当文字超出文本框宽度时,自动调整文字大小

//textField.minimumFontSize = 12//最小可缩小的字号

//是否可操作

textField.isEnabled = true

textField.isUserInteractionEnabled = true

//背景图片设置

textField.borderStyle = .none//先要去除边框样式,否则无效

textField.background = UIImage(named:"daohanglan_touming@2x")

//清除按钮(输入框内右侧小叉)

textField.clearButtonMode = .whileEditing

//设置文本框关联的键盘类型

//        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 = .default

//使文本框在界面打开时就获取焦点,并弹出输入键盘(第一响应着)

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.returnKeyType = .send

//设置代理

textField.delegate = self

// 自定义输入源控件

//        let inputview = UIButton(frame: CGRect(x:0.0, y:0.0, width:self.view.bounds.width, height:100.0))

//        inputview.setImage(UIImage(named: "daohanglan_touming@2x"), for: UIControlState.normal)

//        inputview.backgroundColor = UIColor.lightGray

//        inputview.addTarget(self, action: Selector(click:), for: UIControlEvents.touchUpInside)

//        textField.inputView = inputview

// 自定义输入源控件副视图

let accessoryview = UIView(frame: CGRect(x:0.0, y:0.0, width:self.view.frame.size.width, height:40.0))

accessoryview.backgroundColor = UIColor.green

let accessoryLeft = UIButton(frame: CGRect(x:10.0, y:10.0, width:60.0, height:20.0))

accessoryview.addSubview(accessoryLeft)

accessoryLeft.setTitle("取消", for: UIControlState.normal)

accessoryLeft.backgroundColor = UIColor.orange

accessoryLeft.addTarget(self, action: #selector(leftClick), for: UIControlEvents.touchUpInside)

let accessoryRight = UIButton(frame: CGRect(x:(accessoryview.bounds.width - 10.0 - 60.0), y:10.0, width:60.0, height:20.0))

accessoryview.addSubview(accessoryRight)

accessoryRight.setTitle("确定", for: UIControlState.normal)

accessoryRight.backgroundColor = UIColor.orange

accessoryRight.addTarget(self, action: #selector(rightClick), for: UIControlEvents.touchUpInside)

textField.inputAccessoryView = accessoryview

// 发通知-输入改变

NotificationCenter.default.addObserver(self, selector: #selector(textFiledEditChanged), name: NSNotification.Name.UITextFieldTextDidChange, object: textField)

self.view.addSubview(textField)

}

//键盘return按钮点击事件

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

//收起键盘

//textField.resignFirstResponder()

self.view .endEditing(true)

print(textField.text!)

return true;

}

// 自定义输入源控件时响应事件

// MARK: - click

func click(button:UIButton)

{

self.view.endEditing(true)

}

//MARK: - left/right click

func leftClick(button:UIButton)

{

print("取消")

}

func rightClick(button:UIButton)

{

self.view.endEditing(true)

print("确定")

}

// 通知响应方法-限制输入长度

// MARK: - 通知响应方法

func textFiledEditChanged(notification:NSNotification)

{

let textField:UITextField! = notification.object as! UITextField

if (textField != nil)

{

let text:String! = textField.text

let length = text.characters.count

if (length > 20)

{

}

}

}

// 代理方法

// MARK: - UITextFieldDelegate

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {

print("1 textFieldShouldBeginEditing")

return true

}

func textFieldDidBeginEditing(_ textField: UITextField) {

print("2 textFieldDidBeginEditing")

}

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

print("3 textField")

return true

}

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {

print("4 textFieldShouldEndEditing")

print("text:\(String(describing: textField.text)) length = \(String(describing: textField.text?.characters.count))")

return true

}

func textFieldDidEndEditing(_ textField: UITextField) {

print("5 textFieldDidEndEditing")

}

func textFieldShouldClear(_ textField: UITextField) -> Bool {

print("6 textFieldShouldClear")

return true

}

func textFieldShouldReturn(textField: UITextField) -> Bool {

// 结束编辑

textField.resignFirstResponder()

print("7 textFieldShouldReturn")

return true

}


GitHub:github.com/jixiang0903/swift-UITextField

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容