66 votes

barre de recherche UISearchDisplayController iOS 7 chevauche la barre d’état lors de la recherche

Je suis à jour de mes applications pour iOS 7, et je suis dans le processus d'ajustement de tous mes points de vue à prendre en compte la nouvelle transparence de la barre de statut (de mon appli utilise toujours opaque barres de navigation).

Il a été relativement facile à régler pour la barre d'état dans chaque vue, sauf un problème majeur que je rencontre avec un UISearchBar connecté à un UISearchDisplayController dans un de mes contrôleurs de vue.

La barre de recherche semble s'afficher normalement, comme indiqué ci-dessous:

Search Bar

Le problème est que dès que j'ai commencer la recherche, la barre de navigation disparaît (comme il se doit), mais tout le reste aussi, se déplace jusqu'à chevaucher la barre d'état:

Broken Search Bar

Cela ne semble pas fonctionner comme prévu, depuis l'obscurcissement de l'écran qui se passe de 20 pixels en dessous de la barre de recherche, où la barre de recherche devrait prendre fin.

Est-il construit en solution dans iOS 7? Je préfère ne pas avoir à ajuster manuellement l'image pour chaque opinion, chaque fois que l'utilisateur commence et se termine à la recherche.

Merci!

88voto

Deddiekoel Points 892

Mettre la ligne suivante dans la viewDidLoad fixé il pour moi :

21voto

desmondhume Points 403

Merci Hodade de m'avoir conduit sur la bonne voie! Votre solution a fonctionné, sauf qu'elle n'a déplacé que le cadre de la barre de recherche, laissant mes autres sous-vues au mauvais endroit. La seule chose que j'ai changée était de déplacer toutes les sous-vues de ma vue, ainsi que de l'animer.

Merci!

 -(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        CGRect statusBarFrame =  [[UIApplication sharedApplication] statusBarFrame];
        [UIView animateWithDuration:0.25 animations:^{
            for (UIView *subview in self.view.subviews)
                subview.transform = CGAffineTransformMakeTranslation(0, statusBarFrame.size.height);
        }];
    }
}

-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        [UIView animateWithDuration:0.25 animations:^{
            for (UIView *subview in self.view.subviews)
                subview.transform = CGAffineTransformIdentity;
        }];
    }
}
 

13voto

tachiba Points 91

Vous êtes mai n’utiliser aucune barre de navigation translucide ? Dans l’affirmative, cela permettra de la résoudre.

6voto

Morkrom Points 310

Cela semble décrire le problème que j'avais; J'espère que cela aidera quelqu'un dans mon ancienne position.

  1. Sous-classez votre SearchDisplayController ajouté à votre UIViewController / UITablewViewController,

  2. Ajouter quelque chose comme ça à sa mise en œuvre:

      - (void)setActive:(BOOL)visible animated:(BOOL)animated
    {
        [super setActive:visible animated:animated];
    
        [self.searchContentsController.navigationController setNavigationBarHidden: NO animated: NO];
    
        CGRect frame = self.searchResultsTableView.frame;
        frame.origin.y = CGRectGetHeight(self.searchContentsController.navigationController.navigationBar.frame);
    
        frame.size.height = CGRectGetHeight(frame) - CGRectGetMinY(frame);
    
        self.searchResultsTableView.frame = frame;
    
        frame = self.searchBar.frame;
        self.searchBar.frame = frame;
    
        [self.searchContentsController.view insertSubview:self.searchBar aboveSubview:self.searchResultsTableView];
    
    }
     

6voto

Sabareesh Points 600

J’ai fait ci-dessous le code pour résoudre le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X