美文网首页
迟到的Swift入门 - UITextFiled

迟到的Swift入门 - UITextFiled

作者: 刘_小_二 | 来源:发表于2020-09-07 10:10 被阅读0次

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 标准电话键盘,支持+*#等符号
    URL URL键盘,有.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)
}

相关文章

网友评论

      本文标题:迟到的Swift入门 - UITextFiled

      本文链接:https://www.haomeiwen.com/subject/zeskektx.html