https://www.jianshu.com/p/63bdeca39ddf

1、文本输入框的创建#####

let textField = UITextField(frame: CGRect(x:10, y:60, width:200, height:30))

// let textField = UITextField()

// textField.frame = CGRect(x:20,y:30,width:100,height:30)

//设置边框样式为圆角矩形

textField.borderStyle = UITextBorderStyle.roundedRect

self.view.addSubview(textField)

其中,文本输入框的边框样式有以下几种:

public enum UITextBorderStyle : Int {

case none  无边框

case line 直线边框

case bezel 圆角矩形边框

case roundedRect 边线+阴影

}

2、文本输入框的提示文字#####

textField.placeholder = "请输入相关信息"

提示文字

3、文字大小超过文本框长度时自动缩小字号,而不是隐藏显示省略号#####

textField.adjustsFontSizeToFitWidth=true  //当文字超出文本框宽度时,自动调整文字大小

textField.minimumFontSize=14  //最小可缩小的字号

4、水平/垂直对齐方式

/** 水平对齐 **/

textField.textAlignment = .right //水平右对齐

textField.textAlignment = .center //水平居中对齐

textField.textAlignment = .left //水平左对齐

 

/** 垂直对齐 **/

textField.contentVerticalAlignment = .top  //垂直向上对齐

textField.contentVerticalAlignment = .center  //垂直居中对齐

textField.contentVerticalAlignment = .bottom  //垂直向下对齐

5、背景图片设置

textField.borderStyle = .none //先要去除边框样式

textField.background = UIImage(named:"background1");

6、清除按钮(输入框内右侧小叉)#####

textField.clearButtonMode = .whileEditing  //编辑时出现清除按钮

textField.clearButtonMode = .unlessEditing  //编辑时不出现,编辑后才出现清除按钮

textField.clearButtonMode = .always  //一直显示清除按钮

7,设置文本框关联的键盘类型#####

Default:系统默认的虚拟键盘

ASCII Capable:显示英文字母的虚拟键盘

Numbers and Punctuation:显示数字和标点的虚拟键盘

URL:显示便于输入url网址的虚拟键盘

Number Pad:显示便于输入数字的虚拟键盘

Phone Pad:显示便于拨号呼叫的虚拟键盘

Name Phone Pad:显示便于聊天拨号的虚拟键盘

Email Address:显示便于输入Email的虚拟键盘

Decimal Pad:显示用于输入数字和小数点的虚拟键盘

Twitter:显示方便些Twitter的虚拟键盘

Web Search:显示便于在网页上书写的虚拟键盘

使用样例:

textField.keyboardType = UIKeyboardType.numberPad

8,使文本框在界面打开时就获取焦点,并弹出输入键盘

textField.becomeFirstResponder()

9,使文本框失去焦点,并收回键盘

##########

textField.resignFirstResponder()

10,设置键盘return键的样式

textField.returnKeyType = UIReturnKeyType.done //表示完成输入

textField.returnKeyType = UIReturnKeyType.go //表示完成输入,同时会跳到另一页

textField.returnKeyType = UIReturnKeyType.search //表示搜索

textField.returnKeyType = UIReturnKeyType.join //表示注册用户或添加数据

textField.returnKeyType = UIReturnKeyType.next //表示继续下一步

textField.returnKeyType = UIReturnKeyType.send //表示发送

11,键盘return键的响应

import UIKit

class ViewController: UIViewController,UITextFieldDelegate {

     

    override func viewDidLoad() {

        super.viewDidLoad()

         

        let textField = UITextField(frame: CGRect(x:10,y:160,width:200,height:30))

        //设置边框样式为圆角矩形

        textField.borderStyle = UITextBorderStyle.roundedRect

        textField.returnKeyType = UIReturnKeyType.done

        textField.delegate=self

        self.view.addSubview(textField)

    }

     

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        //收起键盘

        textField.resignFirstResponder()

        //打印出文本框中的值

        print(textField.text)

        return true;

    }

}

12、输入/显示文本字体的颜色#####

textField.textColor = UIColor.cyan

13、文本框的字体大小设置#####

 //text.font = [UIFont fontWithName:@"Arial" size:20.0f];   //设置输入框内容的字体样式和大小

textField.font = UIFont.systemFont(ofSize: 14)

14、文本输入框的代理设置(遵守UITextFieldDelegate协议)#####

例子:class ViewController: UIViewController,UITextFieldDelegate {

textField.delegate = self

15、输入框的背景颜色#####

text.backgroundColor = [UIColor whiteColor];  

 //设置输入框的背景颜色,此时设置为白色如果使用了自定义的背景图片边框会被忽略掉 ~~~

#####16、输入框中一开始就有的文字#####

text.text = @"一开始就在输入框的文字";

#####17、是否自动纠错#####

text.autocorrectionType = UITextAutocorrectionTypeNo;

有以下几种选择样式

typedef enum {

UITextAutocorrectionTypeDefault, 默认

UITextAutocorrectionTypeNo,   不自动纠错

UITextAutocorrectionTypeYes,  自动纠错

} UITextAutocorrectionType;

#####18、再次编辑就清空#####

text.clearsOnBeginEditing = YES;

#####19、首字母是否自动大写#####

text.autocapitalizationType = UITextAutocapitalizationTypeNone;

typedef enum {

UITextAutocapitalizationTypeNone, 不自动大写

UITextAutocapitalizationTypeWords,  单词首字母大写

UITextAutocapitalizationTypeSentences,  句子的首字母大写

UITextAutocapitalizationTypeAllCharacters, 所有字母都大写

} UITextAutocapitalizationType;

#####20、键盘外观#####

textView.keyboardAppearance=UIKeyboardAppearanceDefault

typedef enum {

UIKeyboardAppearanceDefault默认外观,浅灰色

UIKeyboardAppearanceAlert     深灰石墨色

} UIReturnKeyType;

#####21、最右侧加图片是以下代码(左侧类似)#####

UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];  //

text.rightView=image;

text.rightViewMode = UITextFieldViewModeAlways;

typedef enum {

UITextFieldViewModeNever,

UITextFieldViewModeWhileEditing,

UITextFieldViewModeUnlessEditing,

UITextFieldViewModeAlways

} UITextFieldViewMode;

#####22、重写绘制行为#####

除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写

– textRectForBounds:      //重写来重置文字区域

– drawTextInRect:         //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super.

– placeholderRectForBounds:  //重写来重置占位符区域

– drawPlaceholderInRect:  //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super.

– borderRectForBounds:  //重写来重置边缘区域

– editingRectForBounds:  //重写来重置编辑区域

– clearButtonRectForBounds:  //重写来重置clearButton位置,改变size可能导致button的图片失真

– leftViewRectForBounds:

– rightViewRectForBounds:

#####23、委托方法#####

(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

//返回一个BOOL值,指定是否循序文本字段开始编辑

return YES;

}

(void)textFieldDidBeginEditing:(UITextField *)textField{

//开始编辑时触发,文本字段将成为first responder

}

(BOOL)textFieldShouldEndEditing:(UITextField *)textField{

//返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder

//要想在用户结束编辑时阻止文本字段消失,可以返回NO

//这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息

return NO;

}

(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。

//这对于想要加入撤销选项的应用程序特别有用

//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。

//要防止文字被改变可以返回NO

//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中

return YES;

}

(BOOL)textFieldShouldClear:(UITextField *)textField{

//返回一个BOOL值指明是否允许根据用户请求清除内容

//可以设置在特定条件下才允许清除内容

return YES;

}

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

//返回一个BOOL值,指明是否允许在按下回车键时结束编辑

//如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起[textField resignFirstResponder];

//查一下resign这个单词的意思就明白这个方法了

return YES;

}

#####24、通知#####

UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件

UITextFieldTextDidBeginEditingNotification

UITextFieldTextDidChangeNotification

UITextFieldTextDidEndEditingNotification

当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。

因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知

UIKeyboardWillShowNotification   //键盘显示之前发送

UIKeyboardDidShowNotification    //键盘显示之后发送

UIKeyboardWillHideNotification   //键盘隐藏之前发送

UIKeyboardDidHideNotification    //键盘隐藏之后发送

//添加通知方法

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("textFiledEditChanged:"), name: UITextFieldTextDidChangeNotification, object: textfield)

#####25、限制只能输入特定的字符#####

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

NSCharacterSet *cs;

cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];

NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];//cs分离出数组,数组按@""分离出字符串

BOOL canChange = [string isEqualToString:filtered];

return canChange;

}

上面这个NUMBERS是一个宏,可以在文件顶部定义:

define NUMBERS @”0123456789\n” (这个代表可以输入数字和换行,请注意这个\n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入\n,好惨,我在项目中才发现的。)

所以,如果你要限制输入英文和数字的话,就可以把这个定义为:

define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″

当然,你还可以在以上方法return之前,做一提示的,比如提示用户只能输入数字之类的。如果你觉得有需要的话。

#####26、限制只能输入一定长度的字符#####

(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

{  //string就是此时输入的那个字符 textField就是此时正在输入的那个输入框返回YES就是可以改变输入框的值 NO相反

if ([string isEqualToString:@"\n"]) //按会车可以改变

{

return YES;

}

NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];//得到输入框的内容

if (self.myTextField == textField)  //判断是否时我们想要限定的那个输入框

{

if ([toBeString length] > 20) { //如果输入框内容大于20则弹出警告

textField.text = [toBeString substringToIndex:20];

UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@"超过最大字数不能输入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autorelease];

[alert show];

return NO;

}

}

return YES;

}

此外:还有对于UITextField还有很多的用法:

例如:

//设置能不能进行编辑/用户交互的开关

textfield.enabled = true

textfield.userInteractionEnabled = true

//设置圆角属性

textField.layer.cornerRadius = 10.0

textField.layer.masksToBounds = true

//自定义输入源控件

let inputview = UIButton(frame: CGRectMake(0.0, 0.0, CGRectGetWidth(self.view.bounds), 100.0))

inputview.setImage(UIImage(named: "normalImage"), forState: UIControlState.Normal)

inputview.backgroundColor = UIColor.lightGrayColor()

inputview.addTarget(self, action: Selector("click:"), forControlEvents: UIControlEvents.TouchUpInside)

textfield.inputView = inputview

// 自定义输入源控件副视图

let accessoryview = UIView(frame: CGRectMake(0.0, 0.0, CGRectGetWidth(self.view.bounds), 40.0))

accessoryview.backgroundColor = UIColor.greenColor()

let accessoryLeft = UIButton(frame: CGRectMake(10.0, 10.0, 60.0, 20.0))

accessoryview.addSubview(accessoryLeft)

accessoryLeft.setTitle("取消", forState: UIControlState.Normal)

accessoryLeft.backgroundColor = UIColor.orangeColor()

accessoryLeft.addTarget(self, action: Selector("leftClick:"), forControlEvents: UIControlEvents.TouchUpInside)

let accessoryRight = UIButton(frame: CGRectMake((CGRectGetWidth(accessoryview.bounds) - 10.0 - 60.0), 10.0, 60.0, 20.0))

accessoryview.addSubview(accessoryRight)

accessoryRight.setTitle("确定", forState: UIControlState.Normal)

accessoryRight.backgroundColor = UIColor.orangeColor()

accessoryRight.addTarget(self, action: Selector("rightClick:"), forControlEvents: UIControlEvents.TouchUpInside)

textfield.inputAccessoryView = accessoryview

// 自定义输入源控件时响应事件

// MARK: - click

func click(button:UIButton)

{

self.view.endEditing(true)

}

//MARK: - left/right click

func leftClick(button:UIButton)

{

print("取消")

}

func rightClick(button:UIButton)

{

self.view.endEditing(true)

print("确定")

}

作者:刘高见

链接:https://www.jianshu.com/p/63bdeca39ddf

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Swift—UITextField的基本用法的更多相关文章

  1. Swift - 文本输入框(UITextField)的用法

    1,文本框的创建,有如下几个样式: UITextBorderStyle.None:无边框 UITextBorderStyle.Line:直线边框 UITextBorderStyle.RoundedRe ...

  2. swift - UITextField 的用法

    1,文本框的创建,有如下几个样式: public enum UITextBorderStyle : Int {     case none 无边框     case line 直线边框     cas ...

  3. Swift枚举的全用法

    鉴于昨天开会部门会议讨论的时候,发现有些朋友对枚举的用法还是存在一些疑问,所以就写下这个文章,介绍下Swift下的枚举的用法. 基本的枚举类型 来,二话不说,我们先贴一个最基本的枚举: enum Mo ...

  4. SWIFT UITableView的基本用法

    import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: ...

  5. 【iOS】swift 排序Sort函数用法(包含NSDictionary排序)

    用了几分钟做的简单翻译 一个例子 直接贴代码,不过多解释 //这是我们的model class imageFile { var fileName = String() var fileID = Int ...

  6. swift UITextfield 添加点击方法 - 简单实现

    1. 真正在任何系统上都有效的方法 1./// 城市选择 private lazy var cityTextfield:UITextField = { let tf = UITextField() t ...

  7. Swift UITextField各种属性的设置

    //MARK: 文本输入框 func _initTextField() { //如果需要在模拟器中调用电脑的键盘 快捷键:command + shift + k let textField = UIT ...

  8. swift UITextField

    var textField = UITextField(frame: CGRectMake(10,160,200,30)) //设置边框样式为圆角矩形 textField.borderStyle = ...

  9. swift中_的用法,忽略默认参数名。

    swift中默认参数名除了第一个之外,其他的默认是不忽略的,但是如果在参数的名字前面加上_,就可以忽略这个参数名了,虽然有些麻烦,但是这种定义也挺好,而且不想知道名字或者不想让别人知道名字的或者不用让 ...

随机推荐

  1. 物流跟踪 调用快递鸟API

    概要:关于调用快递鸟API,我有几句话想说,有几行代码想写 业务需求:就是做做商城,卖卖东西.然后需要做个物流跟踪的功能 需要获取的信息大概就是这个样子 现在看这个快递怎么这么慢 如何实现? 直接调用 ...

  2. C# 自定义控件容器,设计时可添加控件

    本分步指南介绍在将 UserControl 放在 Windows 窗体上之后,如何将 UserControl 对象用作设计时控件容器.可能会有这样的情况:您想将一个控件拖到 UserControl 中 ...

  3. 十一 JSP&EL&JSTL

    1 什么是JSP? 从用户角度看待,是一个网页从程序员角度,其实是一个Java类,他继承了Servlet,所以可以直接说JSP就是一个Servlet 为什么会有JSP?html多数情况下用来显示静态内 ...

  4. SpringData JPA使用JPQL的方式查询和使用SQL语句查询

    使用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于某些业务来说,我们还需要灵活的构造查询条件, 这时就可以使用@Query注解,结合JPQL的语句方式完成查询 持久 ...

  5. 2018--Linux命令总结整理复习版

    一.ls命令: 用来显示目标列表,在Linux中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件. -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影 ...

  6. maze-----攻防世界

    题目下载之后在linux上查看一下 发现是elf文件尝试运行一下: 要求输入正确的flag才可以,ida查看 交叉引用 对长度和开头对比,进行判断. 转到400690查看 和#进行比较,hex 是一个 ...

  7. Tomcat删除时问题——eclipse部署tomcat时弹出Resource'/Servers' does not exist

    如果你删除一个项目的Servers文件,或者相应文件损坏等,会出现错误, Resource '/Servers' does not exist 那么就需要把它在控制台出的Servers下所部署的Tom ...

  8. Kubernetes——命令行操作

    如果集群初始化失败需要的操作: master:  kubeadm reset   #回答y  执行一条它提示给你的iptables命令即可 node:  systemctl stop kubelet  ...

  9. 033、Java中使用简化运算符

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  10. HTML<figure> <figcaption> 标签定义图文并茂

    本来想分两篇文章来解释说明figure.figcaption的,但是这俩个标签都是定义图文的,所以我们合起来讲解,大家更能容易接受. 大家在写xhtml.html中常常用到一种图片列表,图片+标题 或 ...