2012-09-03 3 views
0

J'ai un UIButton que j'ajoute dynamiquement en utilisant du contenu analysé à partir d'un fichier XML (il est également mis en cache).Action UIButton non appelée

La première fois que je lance l'application, l'action du bouton n'est pas appelée, mais son image et tout le reste se charge très bien. La deuxième fois que je lance l'application, le bouton fonctionne.

Des indices sur les raisons pour lesquelles l'action du bouton n'est pas appelée la première fois que je lance l'application?

- (void)fetchHeader 
{ 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 

    // Initiate the request... 

    channel1 = [[FeedStore sharedStore] fetchFeaturedHeaderWithCompletion: 
      ^(RSSChannel *obj, NSError *err) { 

       if(!err) { 
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 

        // Set our channel to the merged one 
        channel1 = obj; 

        RSSItem *d = [[channel1 items] objectAtIndex:0]; 
        RSSItem *c = [[channel1 items] objectAtIndex:1]; 


        NSString *param = [d photoURL]; // the URL from the XML 
        NSString *param1 = [c photoURL]; // the URL from the XML 


        featured1 = [[UIButton alloc] init]; 
        [featured1 addTarget:self action:@selector(featuredButtonPress:) forControlEvents:UIControlEventTouchUpInside]; 
        [featured1 setFrame:CGRectMake(18, 20, 123, 69)]; 
        [featured1 setImageWithURL:[NSURL URLWithString:param] placeholderImage:[UIImage imageNamed:@"featuredheaderbg.png"]]; 
        featured1.tag = 1; 
        [[self view] addSubview:featured1]; 
       } 
     }]; 
} 
+0

Lorsque vous parcourez le débogueur, est-ce que quelque chose de différent se produit entre le premier lancement et les suivants? –

+0

http://stackoverflow.com/questions/4908879/uibuttons-addtarget-not-called-after-touch-it?rq=1 et ajoutez également userEnteractionEnabled à TRUE –

+0

Vérifiez qu'aucune autre vue ne couvre le bouton. Même les vues cachées au-dessus du bouton l'empêcheraient de recevoir vos événements. – Resh32

Répondre

5

Le problème était qu'un UIView couvrait le bouton en dessous. Parce que la vue était transparente, je n'avais pas réalisé que ça couvrait quoi que ce soit.