/* 《 Swift ---->>UITextField 控件的学习和方法的详细解释《包含代理》》
*
* UITextField 是项目开发中一个必要的控件,它主要用于和用户交互(例如,登陆界
* 面的 账号和密码的输入、注册界面,一些信息的填写),它也可为是,,项目的开
* 始。
*/
// Created by 周双建 on 15/12/3.
// Copyright © 2015年 周双建. All rights reserved.
import UIKit
// 如果要使用其代理 必须准守 其代理协议 UITextFieldDelegate
class ViewController: UIViewController,UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
/*********************************************************/
//创建一个UItextField 的对象
let MyTextField = UITextField(frame:CGRectMake(10,20,self.view.frame.size.width-20,40))
self.view.addSubview(MyTextField)
/*
* 效果显示为: 是一个白色的输入框,没有框线,再输入的时候光标是蓝色的
*/
// 进行MyTextField的 模型设置
/*
enum UITextBorderStylezs : Int {
case None 无线框
case Line 黑色的细线为框
case Bezel 灰色内投影的矩形框
case RoundedRect 圆角
}
*/
//圆角输入框 光标为蓝色
MyTextField.borderStyle = UITextBorderStyle.RoundedRect
//设置UITextField 的背景色 输入字体为黑色
MyTextField.backgroundColor = UIColor.redColor()
/*********************************************************/
//首先清除背景色
MyTextField.backgroundColor = UIColor.clearColor()
// 没有效果
MyTextField.background = UIImage(named: "fadcf1d10901b800bd13b745d48e5755.jpg")
// UItextfield 的清除按钮 “X”号
/*
public enum UITextFieldviewmode : Int {
case Never 从来都不显示
case WhileEditing 在其处于编辑状态下显示,其他都不显示
case UnlessEditing 有输入内容后,并失去焦点,才显示;进入编辑就不显示
case Always 再输入内容后才始终显示 特记:无内容不显示
*/
//始终显示 : 再输入内容后才始终显示 特记:无内容不显示
MyTextField.clearButtonMode = UITextFieldviewmode.UnlessEditing
//UITextField 的暗文输入
MyTextField.secureTextEntry = true
/*
* 效果为黑色圆点
//UItextfield 的键盘样式
/*
public enum UIKeyboardType : Int {
case Default
是手机默认键盘,右边是 return 键 左边是 ?123 键
case ASCIICapable
case NumbersAndPunctuation
这是一个数字符号键盘, 左边是 ABC 右是 return
case URL
这是个网络键盘
case NumberPad
这是一个9 宫格 数字键盘
case PhonePad
这是 9 宫格 数字键盘 带其他符号
case NamePhonePad
英文 36 键 加 左下数字键
case EmailAddress
@available(iOS 4.1,*)
case DecimalPad
这是 9 宫格数字键盘,,左下是个 黑色圆点
@available(iOS 5.0,0)"> case Twitter
@available(iOS 7.0,0)"> case WebSearch
这是英文36键 ,左下是数字键 右下是 GO 键
public static var Alphabet: UIKeyboardType { get } // Deprecated
*/
MyTextField.keyboardType = UIKeyboardType.Alphabet
/*******************************************************/
//更改输入框的右下键的显示
/*
public enum UIReturnKeyType : Int {
case Default 默认 右下 是 return 键
case Go 右下 是 GO键
case Google 右下角 是 search 键
case Join 右下角 是 join 键
case Next 右下角 是 Next 键
case Route 右下角 是 Route 键
case Search 右下角 是 查找键 search
case Send 右下角 是 发送 send 键
case Yahoo 右下角 是 查找键 search
case Done 右下角 是 Done 键
case EmergencyCall 右下角 是 EmergencyCall 键(重拨键)
@available(iOS 9.0,0)"> case Continue
*/
MyTextField.returnKeyType = UIReturnKeyType.EmergencyCall
/************************************************/
MyTextField.placeholder = "成功是什么?"
/*
/************************************************/
/*
这是修改,提示文字的,颜色,大小,位置(NSMutableParagraphStyle 后期再讲其使用) 等
*/
let placehoder = NSAttributedString(string:"我是修改的成功",attributes: [NSForegroundColorAttributeName:UIColor.redColor(),NSFontAttributeName:UIFont.systemFontOfSize(12)])
//再将设置好的 placehoder 给 attributedPlaceholder
MyTextField.attributedPlaceholder = placehoder
/**************************************************************/
// UItextField 的监控
/*
public static var EditingDidBegin: UIControlEvents { get } // UITextField
这个是当输入框成为第一焦点时会 出发 EditingDidBegin 方法
/////////////////////////////////////////////////////
public static var EditingChanged: UIControlEvents { get }
这个参数是,TextField 每输入一次, Change 方法就会调用一次:例如我在输入框里面输入 1 2 3 4 5 这输出的形式
Optional("1")
Optional("12")
Optional("123")
Optional("1234")
Optional("12345")
///////////////////////////////////////////////////
public static var EditingDidEnd: UIControlEvents { get }
这个参数是 输入框失去焦点或者 不允许编辑时,调用
//////////////////////////////////////////////////
public static var EditingDidEndOnExit: UIControlEvents { get } // 'return key' ending editing
这个是键盘右下角的 Return 键 被按下的时候 会调用 EditingDidEndOnExit 方法
*/
MyTextField.addTarget(self,action: "Change:",forControlEvents: UIControlEvents.EditingDidEndOnExit)
/******************************************************************/
// UitextField 的代理方法 全解
MyTextField.delegate = self;
// Do any additional setup after loading the view,typically from a nib.
}
// 这是手势触摸,来结束其 MyTextField 的编辑的
override func touchesBegan(touches: Set<UITouch>,withEvent event: UIEvent?) {
self.view.endEditing(true)
}
/****************************************************************/
func Change(MyTextField:UITextField){
print(MyTextField.text)
}
/******************************************************************/
func EditingDidBegin (Mttextfield:UITextField){
print(Mttextfield.text)
}
/*****************************************************************/
func EditingDidEnd(BnTextfield:UITextField){
}
/*****************************************************************/
func EditingDidEndOnExit(bvtextfield:UITextField){
}
/*****************************************************************/
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
// 这是 输入框将要成为第一相应者的时候调用
return true
}
/*****************************************************************/
func textFieldDidBeginEditing(textField: UITextField) {
//输入框已经成为第一相应者 ,时候调用
}
/*****************************************************************/
func textFieldShouldClear(textField: UITextField) -> Bool {
/*****************************************************************/
func textFieldShouldEndEditing(textField: UITextField) -> Bool {
/*****************************************************************/
func textFieldShouldReturn(textField: UITextField) -> Bool {
// 这个是点击键盘右下角的 return 键的时候调用的方法
return true
//返回值 代表 点击是否有效
}
/*****************************************************************/
/*
textField : 表示当前输入的对象
shouldChangeCharactersInRange :表示当前输入框中将要修改的字符串的长度和位子
replacementString :表示即将替换的字符串
*/
func textField(textField: UITextField,shouldChangeCharactersInRange range: NSRange,replacementString string: String) -> Bool {
// 返回值表示: 即将输入的内容是否可以输入到输入框里面 false 不可以 true 表示可以
if textField.text != "2"{
textField.text = ""
}
/*****************************************************************/
func textFieldDidEndEditing(textField: UITextField) {
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}