如何implement/show跟随pop-over上面的textField?

How to implement/show following pop-over above textField?

我正在尝试在我的 iOS 项目中实现以下功能。 这是屏幕,

如果用户没有输入任何内容或在电子邮件和移动文本字段中输入了错误的数据,我想这样显示。

案例 1:如果用户没有输入电子邮件或输入了错误的电子邮件,那么它将显示 message/view 和 "Enter valid Email Address"

情况2:如果用户没有输入手机号码或输入错误的手机号码,那么它会显示message/view和"Enter valid Mobile Number"

如何使用 swift 实现此目的?

您可以在它们之上创建一个 view 并将其设置为隐藏,并在电子邮件错误时隐藏。您可以取消隐藏 视图

我想要在 UITextField 的右端显示下划线和小图像,您必须完成 UITextField 的子类化。在同一个子类中,您可以将弹出视图添加为子视图,并根据您对 UITextField 的委托方法的要求进行显示和隐藏。

您可以使用 popoverPresentationController 在您的任何 textFields.

上获得 popover

1.创建一个UIViewController,里面有一个UILabel

class PopoverVC: UIViewController {
    @IBOutlet weak var textLabel: UILabel!

    var text: String?

    override func viewDidLoad() {
        super.viewDidLoad()
        self.textLabel.text = self.text
    }
}

2. 在你 ViewController 中创建一个 PopoverVC 的实例,只要你想呈现 message。将其呈现为 popoverPresentationController 并传递要在其上呈现 messagetextField 实例,即

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
    @IBOutlet weak var textField: UITextField!

    @IBAction func onTapButton(_ sender: UIButton) {
        let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "PopoverVC") as! PopoverVC
        controller.text = "Enter valid Mobile Number"
        controller.modalPresentationStyle = .popover
        controller.preferredContentSize = CGSize(width: 300 , height: 70)

        let popover = controller.popoverPresentationController
        popover?.delegate = self
        popover?.permittedArrowDirections = .down
        popover?.sourceView = self.textField
        popover?.sourceRect = self.textField.bounds
        self.present(controller, animated: true, completion: nil)
    }

    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        return .none
    }
}

输出: