McFamous

Untitled

Nov 27th, 2024
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. private lazy var phoneNumberFieldWithRegion: TitledTextField = {
  2. $0.textField.placeholder = "900 000 00 00"
  3. $0.textField.leftTextPadding = 0
  4. $0.textField.keyboardType = .numberPad
  5. $0.textField.returnKeyType = .done
  6. $0.successDescription = "Phone number confirmed."
  7. $0.errorDescription = "Invalid phone number."
  8. $0.setLeftView(on: regionLabel)
  9. $0.setRightView(on: regionButton, withSeparator: true, withLoadingIndicator: true)
  10.  
  11. $0.textField.publisher(for: .editingChanged)
  12. .sink { [weak self] in
  13. let text = self?.phoneNumberFieldWithRegion.textField.text ?? ""
  14. self?.phoneNumberFieldWithRegion.textField.text = TextFormatter.formatEnterText(text: text, fieldMask: .phoneNumberWithoutRegion)
  15. }
  16. .store(in: &cancellables)
  17.  
  18. return $0
  19. }(TitledTextField(title: "Номер телефона", rightViewPadding: 4))
  20.  
  21. private lazy var regionLabel: UILabel = {
  22. $0.text = "+7 "
  23. $0.font = UIFont(name: Fonts.regular, size: 16)
  24. return $0
  25. }(UILabel())
  26.  
  27. private let arrowDownImage = UIImage(named: "common.caretDown")!.withRenderingMode(.alwaysTemplate)
  28. private let regionImage = UIImage(named: "region.russia")!.withRenderingMode(.alwaysOriginal)
  29. private lazy var regionButton: CustomButton = {
  30. $0.setImage(arrowDownImage)
  31. $0.imageView?.contentMode = .scaleAspectFill
  32. $0.layer.cornerRadius = 6
  33. $0.imageEdgeInsets = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 0)
  34.  
  35. let regionImageView = UIImageView(image: regionImage)
  36. $0.addSubview(regionImageView)
  37. $0.subviews.forEach { $0.translatesAutoresizingMaskIntoConstraints = false }
  38. NSLayoutConstraint.activate([
  39. $0.widthAnchor.constraint(equalToConstant: 50),
  40. regionImageView.leadingAnchor.constraint(equalTo: $0.leadingAnchor, constant: 4),
  41. regionImageView.centerYAnchor.constraint(equalTo: $0.centerYAnchor)
  42. ])
  43. return $0
  44. }(CustomButton(style: .ghost(defaultTintColor: ColorScheme.gray500, highlightTintColor: ColorScheme.gray600)))
  45.  
  46. private func onPhoneNumberWithRegionFieldSubmitted() {
  47. phoneNumberFieldWithRegion.textFieldState = .loading
  48. DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
  49. self.phoneNumberFieldWithRegion.textFieldState = .error
  50. self.regionButton.buttonState = .normal
  51. }
  52. DispatchQueue.main.asyncAfter(deadline: .now() + 4) {
  53. self.phoneNumberFieldWithRegion.textFieldState = .success
  54. self.regionButton.buttonState = .normal
  55. }
  56. DispatchQueue.main.asyncAfter(deadline: .now() + 6) {
  57. self.phoneNumberFieldWithRegion.textFieldState = .disabled
  58. self.regionButton.buttonState = .disabled
  59. }
  60. DispatchQueue.main.asyncAfter(deadline: .now() + 8) {
  61. self.phoneNumberFieldWithRegion.textFieldState = .normal
  62. self.regionButton.buttonState = .normal
  63. }
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment