NamanVaishnav
11/21/2018 - 7:19 PM

NVOTPView.swift

//
//  NVOTPView.swift
//  OTPVarification
//
//  Created by naman vaishnav on 22/11/18.
//  Copyright © 2018 naman vaishnav. All rights reserved.
//

import Foundation
import UIKit


class NVOTPView: UIView {
    
    let stackView = UIStackView()
    var arrTextField = [UITextField]()
    
    override func awakeFromNib() {
        setupView()
    }
    
    func setupView() {
        customizeStackView()
        self.layoutIfNeeded()
        self.layoutSubviews()
        stackView.frame = self.frame
        stackView.center = self.center
        self.addSubview(stackView)
        self.layoutIfNeeded()
        self.layoutSubviews()
    }
    
    func customizeStackView(){
        stackView.axis = .horizontal
        stackView.distribution = .fillEqually
        
        for item in 0...3 {
            let txt = UITextField()

            txt.text = "\(item)"
//            txt.becomeFirstResponder()
            txt.isUserInteractionEnabled = true
            txt.delegate = self
            arrTextField.append(txt)
            stackView.addArrangedSubview(txt)
            
        }
        
        
    }
    
}

extension NVOTPView: UITextFieldDelegate {
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        // return NO to disallow editing.
        print("TextField should begin editing method called")
        return true
    }
    
    func textFieldDidBeginEditing(_ textField: UITextField) {
        // became first responder
        print("TextField did begin editing method called")
    }
    
    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
        // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end
        print("TextField should snd editing method called")
        return true
    }
    
    func textFieldDidEndEditing(_ textField: UITextField) {
        // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called
        print("TextField did end editing method called")
    }
    
    private func textFieldDidEndEditing(_ textField: UITextField, reason: UITextField.DidEndEditingReason) {
        // if implemented, called in place of textFieldDidEndEditing:
        print("TextField did end editing with reason method called")
    }
    
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        // return NO to not change text
        print("While entering the characters this method gets called")
        return true
    }
    
    func textFieldShouldClear(_ textField: UITextField) -> Bool {
        // called when clear button pressed. return NO to ignore (no notifications)
        print("TextField should clear method called")
        return true
    }
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        // called when 'return' key pressed. return NO to ignore.
        print("TextField should return method called")
        // may be useful: textField.resignFirstResponder()
        return true
    }

}