0
votes

Comment créer une UIBUTTON de manière programmatique dans IOS 14 dans Objective-C?

J'essaie de créer une uibutton par programme dans iOS 14 (bêta 3) dans l'objectif-c. C'est ce que j'ai essayé, mais le gestionnaire de l'uaction n'est jamais appelé lorsque je touche le bouton:

UIAction *tapAction = [UIAction actionWithHandler:^(UIAction* action){
     NSLog(@"Never gets here");
}];
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100) primaryAction:tapAction];


5 commentaires

Dupliquer Comment créer une UIBUTTON de base programmatiquement?


Ce n'est pas un duplicata. Mon ancien code utilisant AddTtarget ne fonctionne pas sur iOS 14. La cible n'est jamais appelée. Ma compréhension est que iOS 14 modifie la manière dont la cible est spécifiée en exigeant une uation.


Pour clarifier, j'utilise Xcode 12 Beta 3.


Macos Big Sur 11.0 Beta, Xcode 12.0 Beta 4, iOS 14.0 Beta 3 - Basé sur le code de la duplication liée - Fonctionne bien pour moi - votre problème est ailleurs


Oui, j'ai compris que la question est causée par le fait que le bouton était à l'intérieur d'une cellule de vue de la table. Avant IOS 14, la cible est appelée, mais sur iOS 14, ce n'est pas le cas. En tant que solution de contournement, j'utilise DisSelectrowatidExpath et trouvez le bouton dans la cellule et appelez la cible directement.


3 Réponses :


0
votes

C'est comme ça que je crée normalement un bouton dans Objective-C:

- (void)createButton {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0, 0, 50, 100);
    [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
}
    
- (void)buttonClicked:(UIButton *)sender {
   // Do your logic here
}


1 commentaires

C'est ce que fait mon ancien code, mais sur iOS 14 ne parvient pas à atteindre le sélecteur.



0
votes

J'ai écrit une application de test qui affiche simplement un bouton et qu'il fonctionne, le problème doit donc être autre chose dans mon application principale. Merci tout.


0 commentaires

1
votes

J'ai eu le même problème. Cela ressemble à un bug pour moi. Essayez d'ajouter: xxx

à init (style: réutilisateur :) Si vous utilisez une cellule de TableView personnalisée. Veuillez vous reporter à https://developer.apple.com/forums/thread. / 661508? Page = 1 # 636261022 et @OOPER GRANDE RÉPONSE.


0 commentaires