導(dǎo)語:
UITextField有許多好玩好用的地方,因此敝人整理了一些知識點和技巧分享給大家拿愧。
一杠河、初始化
var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let width = UIScreen.mainScreen().bounds.width
//創(chuàng)建UITextField,并設(shè)置背景顏色
let textField: UITextField = UITextField(frame: CGRectMake(50,100,width - 100,30))
// textField.backgroundColor = UIColor.yellowColor()
self.view.addSubview(textField)
self.textField = textField
}
二、基本屬性
//1.設(shè)置背景視圖,設(shè)置占位符浇辜,使用KVC設(shè)置占位符的顏色感猛,文本字體及其顏色
// textField.background = UIImage(named: "1.jpg")
textField.placeholder = "任大樹有感"
textField.setValue(UIColor.blueColor(), forKeyPath: "placeholderLabel.textColor")
textField.font = UIFont.systemFontOfSize(17)//系統(tǒng)默認(rèn)字體
textField.font = UIFont(name: "CourierNewPSMT", size: 17)//自定義字體和大小
textField.textColor = UIColor.blackColor()
textField.tintColor = UIColor.redColor()//光標(biāo)及清除按鈕顏色
//2.設(shè)置對齊方式及垂直對齊方式,文本框樣式,最小字體奢赂,自動適應(yīng)標(biāo)簽大小
textField.textAlignment = .Center
textField.contentVerticalAlignment = .Bottom
/* 文本框樣式
None 不做修飾
Line 線條
Bezel 斜面
RounderRect 扁平化
*/
textField.borderStyle = .RoundedRect
textField.minimumFontSize = 10.0//默認(rèn)0.0
textField.adjustsFontSizeToFitWidth = true
三陪白、高級點兒的常用屬性
1.設(shè)置刪除效果,編輯狀態(tài)膳灶,文本框是否可用咱士,首字母是否大寫
/* 刪除效果
Never 不顯示清除按鈕
WhileEditing 編輯時才出現(xiàn)清除按鈕
UnlessEditing 完成編輯后才出現(xiàn)清除按鈕
Always 一直都顯示清除按鈕
*/
textField.clearButtonMode = .Always
textField.editing
// textField.enabled = false
/* 首字母是否大寫
enum UITextAutocapitalizationType : Int {
case None 不自動大寫
case Words 單詞首字母大寫
case Sentences 句子的首字母大寫
case AllCharacters 所有字母都大寫
}
*/
self.textField.autocapitalizationType = .AllCharacters
self.textField.becomeFirstResponder()//成為第一響應(yīng)
//2.創(chuàng)建左視圖及其顯示類型,創(chuàng)建右視圖及其顯示類型
let leftView: UIImageView = UIImageView(frame: CGRectMake(0,0,30,30))
leftView.image = UIImage(named: "1.jpg")
/* 同上
Never 不顯示
WhileEditing 編輯時才出現(xiàn)
UnlessEditing 完成編輯后才出現(xiàn)
Always 一直都顯示
*/
textField.leftView = leftView
textField.leftViewMode = .Always
//右視圖轧钓,可能蓋住了清除按鈕
let rightView: UIImageView = UIImageView(frame: CGRectMake(0,0,30,30))
rightView.backgroundColor = UIColor.purpleColor()
textField.rightView = rightView
textField.rightViewMode = .UnlessEditing
/*
3.鍵盤外觀
enum UIKeyboardAppearance : Int {
case Default 默認(rèn)外觀
case Dark 深灰石墨色
case Light 淺灰色
}
*/
textField.keyboardAppearance = .Dark
/*
4.完成的按鈕樣式
enum UIReturnKeyType : Int {
case Default 默認(rèn)灰色按鈕序厉,標(biāo)有Return
case Go 標(biāo)有g(shù)o的藍(lán)色按鈕
case Google 標(biāo)有Search的藍(lán)色按鈕
case Join 標(biāo)有Join的藍(lán)色按鈕
case Next 標(biāo)有Next的灰色按鈕
case Route 標(biāo)有Route的藍(lán)色按鈕
case Search 標(biāo)有Search的藍(lán)色按鈕
case Send 標(biāo)有Send的藍(lán)色按鈕
case Yahoo 標(biāo)有Search的藍(lán)色按鈕
case Done 標(biāo)有Done的藍(lán)色按鈕
case EmergencyCall 標(biāo)有EmergencyCall(緊急呼叫)的藍(lán)色按鈕
@available(iOS 9.0, *)
case Continue 標(biāo)有Continue的灰色按鈕
}
*/
textField.returnKeyType = .Continue
四、UITextField代理方法
//1.文本框?qū)⒁_始編輯時毕箍,觸發(fā)的事件
func textFieldShouldBeginEditing(textField: UITextField) -> Bool{ // return NO to disallow editing.(如果返回 false 文本框?qū)⒉辉试S編輯)
return true
}
//2.文本框開始編輯弛房,所作的事兒
func textFieldDidBeginEditing(textField: UITextField){ // became first responder
}
//3.文本框?qū)⒁Y(jié)束編輯時,觸發(fā)該事件
func textFieldShouldEndEditing(textField: UITextField) -> Bool{ // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end
return true
}
//4.文本框結(jié)束編輯而柑,觸發(fā)的事件文捶。
func textFieldDidEndEditing(textField: UITextField){ // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called
}
//5.文本框內(nèi)容改變觸發(fā)該事件荷逞,能得到改變的坐標(biāo)和改變的內(nèi)容
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool{ // return NO to not change text(返回 false 不可改變文本)
return true
}
//6.文本框清空時觸發(fā)該事件
func textFieldShouldClear(textField: UITextField) -> Bool{ // called when clear button pressed. return NO to ignore (no notifications) (返回true,當(dāng)清除按鈕點擊時回調(diào)此方法粹排,返回false則忽視)
print("文本框內(nèi)容被清除拉V衷丁!")
return true
}
//7.點擊鍵盤中的return鍵顽耳,觸發(fā)該事件
func textFieldShouldReturn(textField: UITextField) -> Bool{ // called when 'return' key pressed. return NO to ignore.
print("點擊了鍵盤中的return")//微信把此事件改為 發(fā)送消息事件
return true
}
五坠敷、監(jiān)聽方法
//監(jiān)聽的方法
func notificationAction() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(textDidChange), name: UITextFieldTextDidChangeNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(textDidEndEditing), name: UITextFieldTextDidEndEditingNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(textDidBeginEditing), name: UITextFieldTextDidBeginEditingNotification, object: nil)
}
func textDidChange() {
print("每次編輯觸發(fā)該事件")
}
func textDidEndEditing() {
print("結(jié)束編輯觸發(fā)該事件")
}
func textDidBeginEditing() {
print("開始編輯")
}
//MARK: - 移除監(jiān)聽
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(true)
NSNotificationCenter.defaultCenter().removeObserver(self)
}
六、富文本設(shè)置
//1.創(chuàng)建富文本
let attributeStr: NSMutableAttributedString = NSMutableAttributedString(string: "任大樹有感")
//2.設(shè)置字體
attributeStr.addAttribute(NSFontAttributeName, value: UIFont(name: "CourierNewPSMT", size: 17)!, range: NSRange(location: 0,length: 3))
//3.設(shè)置字體顏色
attributeStr.addAttribute(NSForegroundColorAttributeName, value: UIColor.lightGrayColor(), range: NSRange(location: 0,length: 5))
//4.設(shè)置背景顏色
attributeStr.addAttribute(NSBackgroundColorAttributeName, value: UIColor.yellowColor(), range: NSRange(location: 3, length: 2))
self.textField.attributedPlaceholder = attributeStr
七射富、代理傳值
第一步:在發(fā)送頁面設(shè)置:
/**
1膝迎、制定代理,實現(xiàn)傳值 名稱命名規(guī)范:本類名+Delegate
*/
protocol OtherViewControllerDelegate: NSObjectProtocol {
/**
2胰耗、定義協(xié)議方法限次,用來傳值
*/
func changeValueWithUITextField(text: String)
}
/**
3、定義一個weak屬性的代理
*/
weak var delegate: OtherViewControllerDelegate!
/**
4宪郊、發(fā)送代理
*/
@IBAction func clicked(sender: AnyObject) {
self.delegate!.changeValueWithUITextField(self.textField.text!)
self.navigationController?.popViewControllerAnimated(true)
}
第二步:在接受頁面設(shè)置:
0.設(shè)置按鈕跳轉(zhuǎn)頁面
//代理傳值方法
@IBAction func clicked(sender: AnyObject) {
//代理傳值
let otherVC: OtherViewController = OtherViewController()
otherVC.delegate = self
self.navigationController?.pushViewController(otherVC, animated: true)
}
/**
1掂恕、遵守代理傳值協(xié)議
*/
class ViewController: UIViewController,UITextFieldDelegate,OtherViewControllerDelegate {}
/**
2.實現(xiàn)協(xié)議方法
*/
func changeValueWithUITextField(text: String) {
self.textField.text = text
}
附上Demo->UITextField_Demo
結(jié)束語:
有位名人說:“人的聰明之處在于明白自己的無知拖陆〕诨保”