UITextField dans UISearchBar dans iOS 7

Je suis en train de faire la même apparence de mon UISearchBar avec un Champ de texte à l'intérieur, comme dans mon iOS 6 app. J'ai essayé de code de plusieurs manières, et n'ont pas encore été couronnés de succès. Le problème est, je ne suis pas en mesure de modifier le Champ de l'image depuis iOS 7. Le résultat est, ma TextField prend toute la place dans la NavigationBar et remplace la UIBarButtonItem (bouton menu) vers la droite. Voir les photos ci-dessous:

Captures d'écran http://oi44.tinypic.com/2ufewx0.jpg

iOS 6 code: C'est la façon dont j'ai codé dans iOS 6, où j'ai pu choisir les objets textfield cadre de ce que j'ai aimé!

UITextField *sbTextField = (UITextField *)[searchBar.subviews lastObject];
[sbTextField removeFromSuperview];

CGRect rect = searchBar.frame;
rect.size.height = 32;
rect.size.width = 210;
sbTextField.frame = rect;

[sbTextField setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin];


UIBarButtonItem *searchBarNavigationItem = [[UIBarButtonItem alloc]  initWithCustomView:sbTextField];

[[self navigationItem] setLeftBarButtonItem:searchBarNavigationItem];

Le résultat à partir du code ci-dessus dans iOS 7: ![iOS 7 regarder]

iOS 7 code: La différence dans iOS 7, c'est que vous avez besoin d'utiliser des sous-vues pour ajouter l'objet UITextField à la UISearchBar/UINavigationBar. En faisant cela, je n'ai pas encore été capable de changer son image. Actuellement, elle chevauche le menuButton à droite qui peut être vu dans la photo ci-dessous du présent code...

UITextField* sbTextField;
CGRect rect = subView.frame;
rect.size.height = 32;
rect.size.width = 115;

for (UIView *subView in self.searchBar.subviews){
    for (UIView *ndLeveSubView in subView.subviews){

        if ([ndLeveSubView isKindOfClass:[UITextField class]])
        {

            sbTextField = (UITextField *)ndLeveSubView;
            sbTextField.backgroundColor =[UIColor whiteColor];
            UIBarButtonItem *searchBarNavigationItem = [[UIBarButtonItem alloc] initWithCustomView:sbTextField];
            sbTextField.frame = rect;
            self.navigationItem.leftBarButtonItem = searchBarNavigationItem;
            self.navigationItem.rightBarButtonItem =  menuButton;
            [sbTextField removeFromSuperview];

             break;
        }

    }

 }
 [self.searchBar reloadInputViews];

UITextField dans UISearchBar dans iOS 7
ALORS...Est-il possible de modifier une sous-vue de l'image (TextField) de toute façon ? 🙁

MODIFIER

La réponse est un peu boiteux. Afin de rendre le code du travail dans ios7 avec un bouton à droite du Champ, le Champ doit être défini comme le titleView de la navigationBar. Ce qui n'était pas le cas dans ios 6. Mais il y aura d'autres problèmes et il n'est pas recommandé d'utiliser TextField dans searchBars dans iOS7. Utilisation searchDispalyController à la place. Se ma réponse ci-dessous

 self.navigationItem.titleView = sbTextField;

source d'informationauteur user1293618