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()
}
}
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- iOS开发之路--微博“更多”页面
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- iOS开发之路--微博骨架搭建
- iOS开发使用JSON解析网络数据
- IOS开发代码分享之获取启动画面图片的string
- iOS开发使用XML解析网络数据
- 探讨Swift数组和字典
- Swift中的指针操作和使用详细介绍
- Swift中使用正则表达式的一些方法
- Swift心得笔记之运算符