2009-06-04 8 views

Répondre

13

Si vous utilisez le code dans l'autre réponse, votre application sera rejetée lorsqu'elle sera envoyée à l'app store (pour l'utilisation d'une API non publique). Je l'ai trouvé à la dure. Une meilleure solution consiste à créer une catégorie. Voici ce que je pour remplacer le code dans la solution originale:

@interface UIView (FindFirstResponder) 
- (UIView *)findFirstResponder; 
@end 

Et

@implementation UIView (FindFirstResponder) 
- (UIView *)findFirstResponder 
{ 
    if (self.isFirstResponder) {   
     return self;  
    } 

    for (UIView *subView in self.subviews) { 
     UIView *firstResponder = [subView findFirstResponder]; 

     if (firstResponder != nil) { 
      return firstResponder; 
     } 
    } 

    return nil; 
} 
@end 
+0

Merci pour la tête sur celui-ci. – respectTheCode

5

Ce que vous voulez faire est de trouver le premier répondeur de la fenêtre clé que je pense. Vous pouvez le faire comme ceci:

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 

Cela devrait vous donner la vue à utiliser dans votre appel à la UIActionSheet.

+0

qui l'a fait. Merci. – respectTheCode

+5

Juste pensé que vous aimeriez savoir que si vous soumettez votre application avec le code ci-dessus, il sera rejeté pour une utilisation api non publique. Cela m'est arrivé. –

Questions connexes