7.UITextField

UITextField

UITextField即文本框,可以输入文本.我们将学习它的使用

1. UITextField创建

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let textField = UITextField(frame: CGRect(x: 50, y: 50, width: 400, height: 40))
        textField.borderStyle = .RoundedRect
        textField.placeholder = "请输入姓名"
        textField.textAlignment = .Left
        self.view.addSubview(textField)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

我们创建一个圆角矩形的文本框,并设置了提示文本,运行程序
UITextField创建

2. UITextField的边框样式

再Xcode中,按住ctrl ,鼠标左键点击UITextField,查看它的定义,可以看见边框样式的枚举

public enum UITextBorderStyle : Int {

    case None : 无边框
    case Line : 直线边框
    case Bezel: 直线阴影边框
    case RoundedRect: 圆角矩形边框
}

None:
None
Line:
Line
Bezel:
Bezel
RoundedRect:
RoundedRect

3. UITextField的对齐方式

水平对齐方式:

textField.textAlignment = .Left     // 左对齐
textField.textAlignment = .Center   // 居中对齐
textField.textAlignment = .Right    // 右对齐

垂直对齐方式:

textField.contentVerticalAlignment = .Center    // 居中
textField.contentVerticalAlignment = .Top       // 向上对齐
textField.contentVerticalAlignment = .Bottom    // 向下对齐
textField.contentVerticalAlignment = .Fill

4. 其它文本样式

// 设置文本
textField.text = "邪恶枫叶"
// 设置文本颜色
textField.textColor = UIColor.cyanColor()
// 当文本过长时自动缩小文字以适应文本框
textField.adjustsFontSizeToFitWidth = true
// 设置最小可缩小字号
textField.minimumFontSize = 12

现在运行程序
文本样式

5. 清除按钮

// 是否在开始输入的时候清除以前的文本
textField.clearsOnBeginEditing = true

// 清除按钮显示模式
textField.clearButtonMode = .Always             // 一直显示
textField.clearButtonMode = .Never              // 永远不显示
textField.clearButtonMode = .UnlessEditing      // 输入完后才显示
textField.clearButtonMode = .WhileEditing       // 输入的时候显示

我们将clearButtonMode设置为.Always ,运行程序
clearButtonMode

6. 背景

// 设置是否可输入
textField.enabled = false
// 设置背景图片
textField.background = UIImage(named: "BG")
// 设置不可编辑背景图片
textField.disabledBackground = UIImage(named: "disableBG")
// 设置背景颜色
textField.backgroundColor = UIColor.redColor()

7. 监听UITextField的事件

要监听UITextField的事件,我们需要设置代理

textField.delegate = self

然后当前UIViewController要实现UITextFieldDelegate

class ViewController: UIViewController, UITextFieldDelegate {
    ...
}

现在我们看看UITextFieldDelegate的定义

public protocol UITextFieldDelegate : NSObjectProtocol {

    @available(iOS 2.0, *)
    optional public func textFieldShouldBeginEditing(textField: UITextField) -> Bool // 开始输入前被调用,return false将不会输入文字
    @available(iOS 2.0, *)
    optional public func textFieldDidBeginEditing(textField: UITextField) // 开始输入时调用
    @available(iOS 2.0, *)
    optional public func textFieldShouldEndEditing(textField: UITextField) -> Bool // return true允许编辑停止并获得焦点,return false, 编辑不会停止
    @available(iOS 2.0, *)
    optional public func textFieldDidEndEditing(textField: UITextField) // 
   编辑结束时调用

    @available(iOS 2.0, *)
    optional public func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool // 修改选中选中文本, range为选中范围, return false, 将不会修改文本

    @available(iOS 2.0, *)
    optional public func textFieldShouldClear(textField: UITextField) -> Bool // 清除按钮被点击的时候调用,retun false将会忽略点击(即不会发通知)
    @available(iOS 2.0, *)
    optional public func textFieldShouldReturn(textField: UITextField) -> Bool // return键被点击的时候调用,return false将会忽略点击
}

现在我们看看返回键的样式

public enum UIReturnKeyType : Int {

    case Default 
    case Go
    case Google
    case Join
    case Next
    case Route
    case Search
    case Send
    case Yahoo
    case Done
    case EmergencyCall
    @available(iOS 9.0, *)
    case Continue
}

它只是显示了样式,具体的功能需要我们自己实现

// 返回键样式
textField.returnKeyType = .Done

// MARK: - UITextFieldDelegate

// MARK: 返回按钮点击事件
func textFieldShouldReturn(textField: UITextField) -> Bool {
    print(textField.text)

    return true
}

运行程序,我们在文本框中输入内容, 然后点击Done,会发现控制台会打出相应的文字

特别说明一下:

// MARK: - UITextFieldDelegate
// MARK: 返回按钮点击事件
和OC的 #pragma mark非常类似, 虽然本人对OC不怎么懂+_+!!

我们看看效果:
特别说明

8. UITextField其它属性

public var leftView: UIView? 
public var leftViewMode: UITextFieldViewMode 

public var rightView: UIView? // e.g. bookmarks button
public var rightViewMode: UITextFieldViewMode 

... 
还有一堆, 不详述了, 有用的到的时候点开UITextField看看它的定义,试一试!

9. 完整代码

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        let textField = UITextField(frame: CGRect(x: 50, y: 50, width: 300, height: 40))
        // 设置边框
        textField.borderStyle = .RoundedRect
        // 设置提示文本
        textField.placeholder = "请输入姓名"
        // 设置水平对齐方式
        textField.textAlignment = .Left
        // 设置垂直对齐方式
        textField.contentVerticalAlignment = .Center
        // 设置文本
        textField.text = "邪恶枫叶"
        // 设置文本颜色
        textField.textColor = UIColor.cyanColor()
        // 当文本过长时自动缩小文字以适应文本框
        textField.adjustsFontSizeToFitWidth = true
        // 设置最小可缩小字号
        textField.minimumFontSize = 12

        // 是否在开始输入的时候清除以前的文本
        textField.clearsOnBeginEditing = true
        // 清除按钮显示模式
        textField.clearButtonMode = .Always
//        textField.clearButtonMode = .Never
//        textField.clearButtonMode = .UnlessEditing
//        textField.clearButtonMode = .WhileEditing

        textField.enabled = true
        textField.background = UIImage(named: "BG")
        textField.disabledBackground = UIImage(named: "disableBG")
        textField.backgroundColor = UIColor.redColor()

        textField.delegate = self

        // 返回键样式
        textField.returnKeyType = .Done


        self.view.addSubview(textField)
    }

    // MARK: - UITextFieldDelegate

    // MARK: 返回按钮点击事件
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        print(textField.text)

        return true
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值