J'écris actuellement une classe abstraite UIButton pour mon projet. La logique principale est quand un champ de texte est vide, le bouton est désactivé et activé lorsque l'utilisateur commence le texte d'entrée. Il sera désactivé à nouveau lorsque l'utilisateur supprime tout le texte.UITextfield Delegate sur la classe abstraite UIButton
Maintenant, je ne sais pas comment mettre UITextfield Delegate dans ma classe abstraite UIButton. Je suis débutant dans iOS et c'est ma première fois en suivant cette voie, alors s'il vous plaît, n'importe qui peut m'aider à résoudre ce problème. Merci beaucoup. Je joindre mon code ci-dessous:
class BaseEnterButton: UIButton, UITextFieldDelegate {
var originalButtonText: String?
var activityIndicator: UIActivityIndicatorView!
var buttonTitle:String?
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
commonInit()
}
func commonInit() {
}
func showLoading(){
originalButtonText = self.titleLabel?.text
self.setTitle("", for: .normal)
if (activityIndicator == nil) {
activityIndicator = createActivityIndicator()
}
showSpinning()
}
func textFieldDidBeginEditing(_ textField: UITextField) {
self.isEnabled = true
}
func hideLoading() {
let checkmarkImg = UIImage(named: "success")
self.setTitle(originalButtonText, for:.normal)
activityIndicator.stopAnimating()
self.setImage(checkmarkImg, for: .normal)
}
private func createActivityIndicator() -> UIActivityIndicatorView {
let activityIndicator = UIActivityIndicatorView()
activityIndicator.hidesWhenStopped = true
activityIndicator.color = UIColor.white
return activityIndicator
}
private func showSpinning() {
activityIndicator.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(activityIndicator)
centerActivityIndicatorInButton()
activityIndicator.startAnimating()
}
Où est votre UITextField? Il le regarde dans votre classe UIVIewController. Alors pourquoi avez-vous conforme UITextfieldDelegate ici? –
Je veux juste déplacer toute la logique de contrôle de champ de texte dans la classe abstraite de UIButton, donc dans ViewController, j'ai juste besoin d'appeler la méthode. –
Ajoutez textfield dans UIViewController et vérifiez également cette logique dans votre classe viewcontroller en utilisant l'instance de BaseEnterButton. Ce sera complexe à faire dans cette classe et ce n'est pas suggéré aussi. Parce que pour cela, vous devez obtenir l'objet textfield dans votre classe baseenterbutton. –