您的位置:首页 > 产品设计 > UI/UE

7.UITextField

2016-02-26 11:06 549 查看

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()
}
}


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



2. UITextField的边框样式

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

public enum UITextBorderStyle : Int {

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


None:



Line:



Bezel:



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 ,运行程序



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()
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息