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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift - 文本输入框(UITextField)的用法相关的知识,希望对你有一定的参考价值。

参考技术A 1,文本框的创建,有如下几个样式:

UITextBorderStyle.none:无边框

UITextBorderStyle.line:直线边框

UITextBorderStyle.roundedRect:圆角矩形边框

UITextBorderStyle.bezel:边线+阴影

圆角矩形边框样例:

1

2

3

4

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

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

textField.borderStyle = UITextBorderStyle.roundedRect

self.view.addSubview(textField)

2,修改边框颜色、粗细、圆角半径

1

2

3

4

5

6

7

8

9

10

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

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

textField.borderStyle = UITextBorderStyle.roundedRect

self.view.addSubview(textField)

//修改圆角半径的话需要将masksToBounds设为true

textField.layer.masksToBounds = true

textField.layer.cornerRadius = 12.0  //圆角半径

textField.layer.borderWidth = 2.0  //边框粗细

textField.layer.borderColor = UIColor.red.cgColor //边框颜色

3,文本框提示文字

1textField.placeholder="请输入用户名"

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

1

2

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

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

5,水平/垂直对齐方式

1

2

3

4

5

6

7

8

9

/** 水平对齐 **/

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

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

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

/** 垂直对齐 **/

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

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

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

6,背景图片设置

1

2

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

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

7,清除按钮(输入框内右侧小叉)

1

2

3

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

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

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

8,密码输入框

1textField.isSecureTextEntry = true//输入内容会显示成小黑点

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

Default:系统默认的虚拟键盘

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

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

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

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

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

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

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

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

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

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

数字键盘使用样例:

1textField.keyboardType = UIKeyboardType.numberPad

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

1textField.becomeFirstResponder()

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

1textField.resignFirstResponder()

12,设置键盘 return 键的样式

1

2

3

4

5

6

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

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

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

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

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

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

以发送样式(send)为例:

13,键盘 return 键的响应

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

importUIKit

classViewController: UIViewController,UITextFieldDelegate

    overridefuncviewDidLoad()

        super.viewDidLoad()

        lettextField = 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)

    

    functextFieldShouldReturn(_ textField: UITextField) -> Bool

        //收起键盘

        textField.resignFirstResponder()

        //打印出文本框中的值

        print(textField.text ?? "")

        returntrue

    

swift - 从 var(UITextField 输入)中删除空格不起作用

【中文标题】swift - 从 var(UITextField 输入)中删除空格不起作用【英文标题】:swift - Remove white spaces from var(UITextField input) doesn't work 【发布时间】:2016-08-22 19:08:53 【问题描述】:

我是 swift 新手,但在 ObjectiveC 背景下,我尝试通过单击按钮将文本字段中的输入输入到 var 中。

现在,当我尝试使用“stringByTrimmingCharactersInSet”和许多其他选项删除空格时,它不起作用。这是我的代码,

    var someVariable = urlInputComponent.text!
    if someVariable.containsString(" ")
        someVariable = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
        print(someVariable)

    

我也尝试将结果分配给一个新的变量,

        let trimmed: String = someVariable.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        print(trimmed)

但仍然无法删除空格。我的猜测是我对“未包装的价值”概念感到困惑,如果有人可以帮助我,那将非常有帮助。谢谢!

【问题讨论】:

如果您查看文档,someVariable.stringByTrimmingCharactersInSet 返回一个新字符串,该字符串是通过从给定字符集中包含的字符串字符的两端删除而生成的,因此它按预期工作 - 请参阅@Anbu 的答案 【参考方案1】:

尝试另一种方式

 urlInputComponent.text! = urlInputComponent.text!.stringByReplacingOccurrencesOfString(" ", withString: "")

或者试试这个

let trimmed = "".join(urlInputComponent.text!.characters.map( $0 == " " ? "" : String($0) ))
 print (trimmed)

【讨论】:

没关系,第一个选项有效。我的错,我忘记尝试了。谢谢。【参考方案2】:

这是您可以用来开始清理的代码:

extension String 
    func condenseWhitespace() -> String 
        let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).filter(!Swift.isEmpty($0))
        return " ".join(components)
    


var string = "  Lorem   \r  ipsum dolar   sit  amet. "
println(string.condenseWhitespace())

将此委托方法也添加到您的代码中:

 func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool 
       if range.location == 0 && string == " " 
           return false
       
       return true
 

【讨论】:

【参考方案3】:

对于 Swift 3,您可以使用:

//let myTextField.text = " Hello World"

myTextField.text.replacingOccurrences(of: " ", with: "")
// Result: "Helloworld"

【讨论】:

【参考方案4】:
let string = textField.text?.trimmingCharacters(in: .whitespaces)

【讨论】:

以上是关于Swift - 文本输入框(UITextField)的用法的主要内容,如果未能解决你的问题,请参考以下文章

swift3.0 对UITextField()输入框输入的内容进行监控

Swift—UITextField的基本用法

Swift 在文本输入期间验证 2 uitextfield 密码

如何在 swift 中部分屏蔽 UITextField 文本?

如何在 Swift 中使用 UITextField 从图像中提取特定文本?

仅允许 UITextField 输入 Swift iOS8 的电子邮件 [重复]