2017-08-14 5 views
0

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() 
} 
+1

Où est votre UITextField? Il le regarde dans votre classe UIVIewController. Alors pourquoi avez-vous conforme UITextfieldDelegate ici? –

+0

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. –

+0

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. –

Répondre

-1

Utilisez la méthode suivante pour ajouter UIButton

-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:0.3f]; 
// self.scrollView.frame = CGRectMake(0, 35, self.view.bounds.size.width, 
self.view.bounds.size.height - 250); 
[UIView commitAnimations]; 

UIButton *btnColor = [UIButton buttonWithType:UIButtonTypeCustom]; 
[btnColor addTarget:self action:@selector(btnColorPressed:) 
forControlEvents:UIControlEventTouchUpInside]; 
btnColor.frame = CGRectMake(150, 5, 25, 25); 
[btnColor setBackgroundImage:[UIImage 
imageNamed:@"PaintPickerButton.png"] forState:UIControlStateNormal]; 
[self.txtField addSubview:btnColor]; 

return YES; 
} 

peut-être cela aidera

+1

OP utilise Swift. Ceux qui sont nouveaux sur iOS ne connaissent pas objC et ne peuvent généralement pas faire la traduction. – ryantxr