gpt4 book ai didi

ios - 如何调用与特定 UITextField 相关的函数?

转载 作者:行者123 更新时间:2023-11-28 15:55:27 28 4
gpt4 key购买 nike

我是 Swift 和 Xcode 的新手,所以请多多包涵。

我有一个用于创建帐户屏幕的 UIViewController,它有 4 个 UITextFields。当键盘出现时,前 3 个可以很好地编辑,但最后一个需要推送 UIView 才能显示。

我已经安装了 Cocoapod IHKeyboardAvoiding,它运行良好,只有当我点击前三个 UITextfields 时,屏幕才会向上推。伪代码是:'当点击确认密码文本字段时,应该发生键盘推送。当点击所有其他文本字段时,不应发生键盘按下。”

我不确定如何将伪代码实现为实际的 swift 代码。我为确认密码文本字段创建了一个 IBAction 并在其中实现了键盘推送代码。这有效,但只要点击确认密码文本字段,然后点击另一个文本字段,键盘推送就会应用于所有文本字段。我认为该函数需要在 viewDidLoad 中调用,但您不能在 viewDidLoad 中使用 IBAction 函数。

调用该函数的最佳方式是什么?

import UIKit
import IHKeyboardAvoiding

class LoginViewController: UIViewController {

@IBOutlet var avoidingView: UIView!

@IBAction func confirmPassword(_ sender: UITextField) {
KeyboardAvoiding.avoidingView = self.avoidingView
}


override func viewDidLoad() {
super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

最佳答案

  1. 首先,您要将类设置为符合 UITextFieldDelegate:

所以在你的情况下,

class LoginViewController: UIViewController, UITextFieldDelegate {
  1. 然后,按照上面 CodeBender 的描述设置标签。您只需为您确实要为其移动屏幕的第 4 个文本字段执行此操作。

  2. 将所有 4 个文本字段的委托(delegate)设置为自身。例如,如果您的文本字段被命名为一、二、三、四

    one.delegate = self
    two.delegate = self
    three.delegate = self
    four.delegate = self
    //Change the return key to Done so that tapping it dismisses keyboard
    four.returnKeyType = .done
  3. 将以下内容添加到您的类(class)中:

    func textFieldDidBeginEditing(_ textField: UITextField) {

    if textField.tag == 1 {

    UIView.animate(withDuration: 0.3, animations: {

    self.view.frame.origin.y -= 224

    })

    }
    }



    func textFieldShouldEndEditing(_ textField: UITextField) {

    textField.resignFirstResponder()

    if textField.tag == 1 {

    UIView.animate(withDuration: 0.3, animations: {

    self.view.frame.origin.y += 224

    })

    }

    }

应该可以了,如果遇到任何问题请告诉我!

关于ios - 如何调用与特定 UITextField 相关的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41818846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com