UISearchBar délégué ne répond pas à annuler bouton
J'ai un UIViewController
qui est un UISearchBarDelegate
et un MKMapViewDelegate
. Le searchBarSearchButtonClicked
événement fonctionne très bien, mais lors de l'essai de l'iOS 4.2 le searchBarCancelButtonClicked n'est jamais appelé au moment de frapper le bouton annuler. 4.3 tout fonctionne bien. J'ai d'autres points de vue avec le même code et il fonctionne très bien. J'ai triple vérifié les signatures de méthode.
Pourrait-il être quelque chose à voir avec la MapView, ou suis-je en train de faire quelque chose de manifestement mal?
Mon .h fichier:
@interface MyViewController : UIViewController <UISearchBarDelegate,MKMapViewDelegate,UIAlertViewDelegate>{
MKMapView *mapMainView;
UISearchBar *sBar;
}
@property (nonatomic, retain) UISearchBar *sBar;
@end
Et j'ai créer la barre de recherche comme suit:
sBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320.0, 70.0)] autorelease];
sBar.delegate = self;
sBar.showsCancelButton = YES;
[self.view addSubview:sBar];
[sBar becomeFirstResponder];
La méthode:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
[searchBar resignFirstResponder];
searchBar.hidden = YES;
}
Quelqu'un a une idée de pourquoi cela peut-il se passer?
Sonne comme un cadre de bug. Pourriez-vous télécharger un minimum .xcproj pour que je puisse voir ce qu'il se passe?
OriginalL'auteur user213517 | 2011-05-14
Vous devez vous connecter pour publier un commentaire.
J'ai eu exactement le même problème. En tenant le bouton annuler pendant quelques secondes travaillé.
La raison pour moi est que j'avais mis en œuvre UITapGestureRecognizer dans la tableview. Si cela a pris la priorité sur le bouton ou cliquez sur "x", cliquez sur le bouton dans la barre de recherche.
La solution dans mon cas était de limiter la reconnaissance des gestes pour seulement le backgroundview de la tableview. Je suppose que chose de similaire pourrait se produire dans votre cas. Essayez de limiter le geste des modules de reconnaissance au minimum sous-vue nécessaire et la barre de recherche devrait être en dehors de ce point de vue.
Je vous remercie. C'est exactement mon problème. J'ai eu une vue de collection. J'ai limité le robinet geste à l'arrière-plan de la vue et cela a fonctionné. Merci encore.
Je n'ai pas eu de geste recognisers et le bouton annuler ne fonctionne toujours pas déclencher son délégué méthode comme il se doit. Bien que le tap-and-hold a fonctionné pour moi, je ne peux pas compter sur ce comportement. Merci pour l'astuce de toute façon 🙂 +1
OriginalL'auteur Anil Puttabuddhi
Probablement votre sbar objet se dégager, dans ce cas est un autorelease objet, Pourquoi ?. Essayez de déclarer sBar comme IBOutlet de la propriété. Faire de la adéquat des liens dans Interface Builder, supprimer les alloc comme code, mis en viewDidUnload
auto.sbar = nil;
et releas dans dealloc. dans le viewDidLoad mettre cela.
Me dire si cela fonctionne
OriginalL'auteur bolek
essayez ceci:
et essayer de mettre de presse dans le dealloc
OriginalL'auteur Kumaran
OriginalL'auteur Mazen Kasser