Я пытаюсь реализовать следующие функции в своем проекте iOS. Вот скрин,
Если пользователь ничего не вводит или вводит неверные данные в электронную почту и мобильные текстовые поля, я хочу показать это так.
Дело 1: если пользователь не ввел адрес электронной почты или ввел неправильный адрес электронной почты, он отобразит сообщение/представление с надписью «Введите действительный адрес электронной почты».
Случай 2: если пользователь не ввел номер мобильного телефона или ввел неправильный номер мобильного телефона, тогда будет показано сообщение/представление с надписью «Введите действительный номер мобильного телефона».
Как добиться этого с помощью Swift?
Вы можете создать Посмотреть поверх них и сделать его скрытым, а также когда адрес электронной почты неправильный. Вы можете отобразить Посмотреть.
Дело в том, что я хочу реализовать эту функцию в каждом ViewController, где бы ни находились формы. Так что этот вариант мне не подходит.
Я думаю, чтобы показать подчеркивание и показать небольшое изображение в правом конце UITextField, вы должны были сделать подкласс UITextField. В том же подклассе вы можете добавить всплывающее окно в качестве подпредставления, а также отображать и скрывать в соответствии с вашими требованиями из методов делегата UITextField.
Вы можете использовать popoverPresentationController
, чтобы получить popover
на любой из ваших textFields
.
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
и передайте экземпляр textField
, над которым вы хотите представить message
, т.е.
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
}
}
Выход:
Один из способов — создать uiview прямо над текстовыми полями и сохранить их высоту равной нулю. Когда есть ошибка, вы можете анимировать их, увеличив их высоту и сделав их видимыми. Используйте автоматический макет или раскадровку