Swift - Textfield

Swift - Textfield 首页 / iOS入门教程 / Swift - Textfield

可以将其定义为用于在界面中显示可编辑文本区域的对象。文本字段用于从用户获取基于文本的输入。

class UITextField : UIControl

正如无涯教程为标签(Label)所讨论的,无涯教程还可以通过提供属性来自定义文本字段。在某些情况下,无涯教程可能还需要配置键盘,例如限制用户仅输入数字。 

在这里,无涯教程将使用文本字段和标签创建一个表单。无涯教程还将在文本字段上应用一些验证。如果验证失败,则将向用户显示警报;否则,将向用户显示成功消息。

为了创建项目的界面,无涯教程将使用文本字段从用户那里获取数据,并与用于向用户显示消息的标签相关联。

链接:https://www.learnfk.comhttps://www.learnfk.com/ios/ios-textfield.html

来源:LearnFk无涯教程网

无涯教程不会在应用程序中使用Button,无涯教程使用可点击的标签来触发事件。

无涯教程网

在项目中创建了以下视图,以从用户那里获取信息。

iOS TextField

在iOS开发中,无涯教程通常会在成功完成任何任务时创建另一个屏幕。但是,在此示例中,无涯教程将在同一屏幕上创建一个包含成功消息的UIView,并将其隐藏,直到在点击的提交标签上成功通过验证为止。

下图显示了添加createUserSuccessView之后的界面。

iOS TextField


Outlets是在关联视图控制器类中创建的。所有连接outlets都可以在XCode的连接检查器中显示,如下图所示。

iOS TextField

ViewController.swift

import UIKit  
  
class ViewController: UIViewController {  
    @IBOutlet weak var createUserSuccessView: UIView!  
      
    @IBOutlet weak var nameTextField: UITextField!  
      
    @IBOutlet weak var emailTextField: UITextField!  
      
    @IBOutlet weak var passwordTextField: UITextField!  
      
    @IBOutlet weak var mobileTextField: UITextField!  
      
    @IBOutlet weak var sbmtLbl: UILabel!  
      
    @IBOutlet weak var messageNameLbl: UILabel!  
      
    override func viewDidLoad() {  
        super.viewDidLoad()  
       //Do any additional setup after loading the view.  
        setInitViews()  
        sbmtLbl.isUserInteractionEnabled = true  
        let tap = UITapGestureRecognizer(target: self, action: #selector(sbmtBtnTapped(sender:)))  
        sbmtLbl.addGestureRecognizer(tap)  
    }  
    func setInitViews(){  
        nameTextField.becomeFirstResponder()  
        emailTextField.delegate = self  
        mobileTextField.delegate = self  
        nameTextField.delegate = self  
        passwordTextField.delegate = self  
          
    }  
      
      
    @objc func sbmtBtnTapped(sender: UITapGestureRecognizer){  
        if(nameTextField.text?.isEmpty ?? false || emailTextField.text?.isEmpty ?? false || passwordTextField.text?.isEmpty ?? false || passwordTextField.text?.isEmpty ?? false){  
            let alert = UIAlertController(title: nil, message: "Please fill all the details", preferredStyle: .alert)  
            let action = UIAlertAction(title: "OK", style: .default) { (action) in  
                self.dismiss(animated: true, completion: nil)  
            }  
            alert.addAction(action)  
            self.present(alert, animated: true, completion: nil)  
        }  
        else{  
            messageNameLbl.text = "Hi " + (nameTextField.text ?? "")  
            createUserSuccessView.isHidden = false  
              
        }  
    }  
}  
  
  
extension ViewController:UITextFieldDelegate{  
      
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {  
        if(textField == mobileTextField){  
            let currrentCharacterCount = textField.text?.count ?? 0  
            if range.length + range.location > currrentCharacterCount {  
                return false  
            }  
            let newLength = currrentCharacterCount + string.count - range.length  
            return newLength <= 10  
        }  
        else{  
        return true  
        }  
    }  
}  

输出:

iOS TextField

配置键盘

通过调用TextField上的beginFirstResponder()方法,TextField可以获取焦点。当文本字段获取焦点后,键盘将自动变为可见状态,并且键盘输入将绑定到文本字段。要关闭键盘,请在TextField上调用resignFirstResponder()方法。为了响应某些特定的交互,无涯教程可能需要关闭键盘。当用户按下返回键时,键盘自动关闭。

TextField委托方法

SNMethod SignatureDescription
1func textFieldShouldBeginEditing(UITextField) -> Bool要求委托编辑是否应从相应的文本字段开始。
2func textFieldDidBeginEditing(UITextField)要求委托编辑是在文本字段中开始的。
3func textFieldShouldEndEditing(UITextField) -> Bool要求委托在文本字段中结束编辑。
4func textFieldDidEndEditing(UITextField, reason: UITextField.DidEndEditingReason)要求委托已经停止了对指定文本字段的编辑。
5func textFieldDidEndEditing(UITextField)与上述相同。
6func textField(UITextField, shouldChangeCharactersIn: NSRange, replacementString: String) -> Bool要求委托是否应更改文本字段的当前内容。
7func textFieldShouldClear(UITextField) -> Bool要求委托是否应删除文本字段的当前内容。

TextField属性

sn属性描述属性
1text当前文本字段内容。text
2color文本字段颜色。textColor
3font文本字段字体。font
4alignment文本字段对齐。 textAlignment
5placeholder文本字段占位符。placeholder
6background文本字段背景图像。background
7disabled禁用文本字段。disabledBackground
8border style文本字段边框样式。 borderStyle
9clearn button清除按钮是可以由用户删除的叠加视图,以删除文本字段的所有内容。clearButtonMode
10Min font sizeTextField的最小字体大小。 minFontSize

键盘属性

sn属性描述属性
1Capitalization将自动大写字母样式应用于文本字段中的键入文本。 autocapitalizationType
2Correction用于确定是否在键入时启用自动校正。autocorrectionType
3Spell Checking用于确定是否在键入时启用拼写检查。 spellCheckingType
4Keyboard Type设置键入时显示的键盘的类型。 keyboardType
5Appearance用于设置文本字段的样式。 keyboardAppearance
6Return key用于设置要在键盘上显示的返回键的类型。 returnKeyType

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

人工智能基础课 -〔王天一〕

机器学习40讲 -〔王天一〕

如何设计一个秒杀系统 -〔许令波〕

Netty源码剖析与实战 -〔傅健〕

图解 Google V8 -〔李兵〕

容器实战高手课 -〔李程远〕

手把手教你落地DDD -〔钟敬〕

运维监控系统实战笔记 -〔秦晓辉〕

大型Android系统重构实战 -〔黄俊彬〕

好记忆不如烂笔头。留下您的足迹吧 :)