Có cách nào để hiển thị lỗi xác thực trên số UITextField
tương tự như nhanh TextView.setError()
của Android không?Hiển thị lỗi xác thực trên iOS UITextField tương tự với TextView.setError của Android()
Trả lời
UITextField
không có chức năng xác thực ngoài hộp. Bạn có thể tìm thấy một số API nguồn mở để giúp bạn thực hiện việc này. Một tùy chọn có thể là xem xét api SSValidationTextField.
Mã sẽ
var phoneValidationTextField = SSValidationTextField(frame: CGRectMake(200, 200, 150, 50))
phoneValidationTextField.validityFunction = self.isValidPhone
phoneValidationTextField.delaytime = 0.5
phoneValidationTextField.errorText = "Incorrect Format"
phoneValidationTextField.successText = "Valid Format"
phoneValidationTextField.borderStyle = UITextBorderStyle.RoundedRect
self.addSubview(phoneValidationTextField)
Bạn có thể xác nhận các văn bản bằng cách thiết lập UITextField
đại biểu để điều khiển xem của bạn sau đó làm một cái gì đó như thế này:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
// Your method to validate the input
// self.validateInputText()
return true
}
Và thậm chí bạn có thể thay đổi màu sắc biên giới của nó nếu bạn muốn:
textField.layer.borderColor = UIColor.redColor().CGColor
Tôi hy vọng điều này sẽ giúp bạn.
Không, không có sẵn phương thức tích hợp sẵn để thực hiện tương tự. Để làm điều đó, bạn cần tùy chỉnh UITextField
.
Có một số thư viện nguồn mở có sẵn để thực hiện việc đó. Bạn có thể tìm thấy một địa chỉ tại đây: US2FormValidator
Không, bạn cần phải
lớp con các
UITextField
Tạo một hàm setError, chúng ta hãy gọi nó
func setError()
Trong chức năng đó bạn có thể tạo
UIImageView
có chứaUIImage
(hình ảnh lỗi). Đặt nó vào rightView củaUITextField
bằng cách sử dụngUITextField.rightView
- Đừng quên để thiết lập
UITextField.rightViewMode
để luôn hiển thị
EDIT:
Ngoài ra, nếu bạn không thích subclassing. Bạn có thể trực tiếp đặt rightVIew của số UITextField
thành một số UIImageView
giữ hình ảnh lỗi
Chỉ cần chia sẻ điều tôi thường sử dụng. Điều này được thiết kế để vừa với TextFields "chỉ có đường viền dưới cùng".- Bởi vì tôi thích chúng;) - nhưng có thể dễ dàng được tùy chỉnh để phù hợp với bất cứ điều gì phong cách
mở rộng thành lập các trường văn bản để chỉ hiển thị một điểm mấu chốt duy nhất:
extension UITextField {
func setBottomBorderOnlyWith(color: CGColor) {
self.borderStyle = .none
self.layer.masksToBounds = false
self.layer.shadowColor = color
self.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
self.layer.shadowOpacity = 1.0
self.layer.shadowRadius = 0.0
}
}
Sau đó, một phần mở rộng khác để làm cho đèn flash màu đỏ và lắc cho thấy có lỗi xác thực:
extension UITextField {
func isError(baseColor: CGColor, numberOfShakes shakes: Float, revert: Bool) {
let animation: CABasicAnimation = CABasicAnimation(keyPath: "shadowColor")
animation.fromValue = baseColor
animation.toValue = UIColor.red.cgColor
animation.duration = 0.4
if revert { animation.autoreverses = true } else { animation.autoreverses = false }
self.layer.add(animation, forKey: "")
let shake: CABasicAnimation = CABasicAnimation(keyPath: "position")
shake.duration = 0.07
shake.repeatCount = shakes
if revert { shake.autoreverses = true } else { shake.autoreverses = false }
shake.fromValue = NSValue(cgPoint: CGPoint(x: self.center.x - 10, y: self.center.y))
shake.toValue = NSValue(cgPoint: CGPoint(x: self.center.x + 10, y: self.center.y))
self.layer.add(shake, forKey: "position")
}
}
Làm thế nào để sử dụng:
Thiết lập các UITextField hiển thị đường viền đáy chỉ trong viewDidLoad:
override func viewDidLoad() {
myTextField.setBottomBorderOnlyWith(color: UIColor.gray.cgColor)
}
Sau đó, khi một số nút được nhấp và bạn không xác thực trên sân:
@IBAction func someButtonIsClicked(_ sender: Any) {
if let someValue = myTextField, !name.isEmpty {
// Good To Go!
} else {
myTextField.isError(baseColor: UIColor.gray.cgColor, numberOfShakes: 3, revert: true)
}
}
- 1. Cách hiển thị lỗi xác thực cho tiện ích spinner tương tự như TextView.setError()
- 2. Xác thực jQuery - Ẩn thông báo lỗi xác thực hiển thị/hiển thị lỗi tùy chỉnh
- 3. Lỗi xác thực lệnh hiển thị trên chuyển hướng
- 4. iOS có tương tự như RecyclerView của Android không?
- 5. Hộp thoại Chia sẻ trên Facebook luôn hiển thị hình ảnh xác thực trên Android
- 6. Hiển thị lỗi xác thực bên cạnh trường của mình
- 7. Cách hiển thị nhiều lỗi xác thực với @ Html.ValidationMessageFor?
- 8. iOS 'tương đương với SharedPreferences của Android
- 9. Tương đương với Html.fromHtml() của Android trong iOS là gì?
- 10. ios UITextField để chỉnh sửa với uidatepicker
- 11. Android picker/danh sách tương tự để chọn ngày iOS
- 12. Hiển thị NSMutableAttributedString trên iOS 8
- 13. Có tương đương với idifierForVendor của iOS cho Android không?
- 14. Lỗi tóm tắt xác thực Mvc 4 không hiển thị
- 15. Lỗi xác thực mùa xuân không được hiển thị
- 16. Xác thực mô hình lồng nhau - lỗi không hiển thị
- 17. Tại sao Biểu tượng cảm xúc không thể hiển thị chính xác trong UITextField?
- 18. Laravel 5.2 không hiển thị lỗi xác thực biểu mẫu
- 19. Cách hiển thị các mục trên bản đồ google tương tự như cách google hiển thị kết quả của nó
- 20. Tương đương với Android của iOS GCD dispatch_group API
- 21. Hiển thị mẫu lỗi xác thực trên điều khiển bên trong UserControl trong WPF
- 22. Cách hiển thị lỗi xác thực phía máy chủ trên trang xem
- 23. Tương thích với nền tảng iOS tương thích trong Android
- 24. Hiển thị tự động hoàn tất ngay trên Android
- 25. Hiển thị ký tự unicode của biểu tượng cảm xúc iOS trên web
- 26. UIImageView với iOS 7 không hiển thị
- 27. Làm thế nào để hiển thị thông báo lỗi xác thực trên trang ASP.NET MVC?
- 28. Android studio hiển thị các nguồn từ API của compileSdkVersion khi gỡ lỗi trên thiết bị với API cũ hơn
- 29. đường ray fields_for không hiển thị sau khi lỗi xác thực trên biểu mẫu lồng nhau
- 30. Hiển thị lỗi xác thực trong Laravel 5 với React.js và Ajax
Câu trả lời hoàn hảo;) –