Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private lazy var phoneNumberFieldWithRegion: TitledTextField = {
- $0.textField.placeholder = "900 000 00 00"
- $0.textField.leftTextPadding = 0
- $0.textField.keyboardType = .numberPad
- $0.textField.returnKeyType = .done
- $0.successDescription = "Phone number confirmed."
- $0.errorDescription = "Invalid phone number."
- $0.setLeftView(on: regionLabel)
- $0.setRightView(on: regionButton, withSeparator: true, withLoadingIndicator: true)
- $0.textField.publisher(for: .editingChanged)
- .sink { [weak self] in
- let text = self?.phoneNumberFieldWithRegion.textField.text ?? ""
- self?.phoneNumberFieldWithRegion.textField.text = TextFormatter.formatEnterText(text: text, fieldMask: .phoneNumberWithoutRegion)
- }
- .store(in: &cancellables)
- return $0
- }(TitledTextField(title: "Номер телефона", rightViewPadding: 4))
- private lazy var regionLabel: UILabel = {
- $0.text = "+7 "
- $0.font = UIFont(name: Fonts.regular, size: 16)
- return $0
- }(UILabel())
- private let arrowDownImage = UIImage(named: "common.caretDown")!.withRenderingMode(.alwaysTemplate)
- private let regionImage = UIImage(named: "region.russia")!.withRenderingMode(.alwaysOriginal)
- private lazy var regionButton: CustomButton = {
- $0.setImage(arrowDownImage)
- $0.imageView?.contentMode = .scaleAspectFill
- $0.layer.cornerRadius = 6
- $0.imageEdgeInsets = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 0)
- let regionImageView = UIImageView(image: regionImage)
- $0.addSubview(regionImageView)
- $0.subviews.forEach { $0.translatesAutoresizingMaskIntoConstraints = false }
- NSLayoutConstraint.activate([
- $0.widthAnchor.constraint(equalToConstant: 50),
- regionImageView.leadingAnchor.constraint(equalTo: $0.leadingAnchor, constant: 4),
- regionImageView.centerYAnchor.constraint(equalTo: $0.centerYAnchor)
- ])
- return $0
- }(CustomButton(style: .ghost(defaultTintColor: ColorScheme.gray500, highlightTintColor: ColorScheme.gray600)))
- private func onPhoneNumberWithRegionFieldSubmitted() {
- phoneNumberFieldWithRegion.textFieldState = .loading
- DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
- self.phoneNumberFieldWithRegion.textFieldState = .error
- self.regionButton.buttonState = .normal
- }
- DispatchQueue.main.asyncAfter(deadline: .now() + 4) {
- self.phoneNumberFieldWithRegion.textFieldState = .success
- self.regionButton.buttonState = .normal
- }
- DispatchQueue.main.asyncAfter(deadline: .now() + 6) {
- self.phoneNumberFieldWithRegion.textFieldState = .disabled
- self.regionButton.buttonState = .disabled
- }
- DispatchQueue.main.asyncAfter(deadline: .now() + 8) {
- self.phoneNumberFieldWithRegion.textFieldState = .normal
- self.regionButton.buttonState = .normal
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment