2009-11-11 5 views
1

J'ai une tableview avec une barre de recherche en haut. Lorsque je clique sur la recherche, elle est appelée par le premier répondeur et le clavier apparaît. La barre de recherche a un bouton d'annulation, mais lorsque la table est vide, je veux que l'utilisateur puisse appuyer n'importe où sur les rangées vides du tableau pour démissionner de la barre de recherche et du clavier en tant que premier répondant. Comment puis-je faire cela?Tapez sur vide UITableView pour démissionner de la barre de recherche

Répondre

4

Vous devrez créer votre propre classe UITableView qui remplace la méthode touchesEnded. Ensuite, vous pouvez rappeler votre délégué, qui devrait être votre contrôleur de vue, et lui dire d'indiquer à votre UISearchBar de démissionner du premier répondeur.

La classe dérivée UITableView ressemblerait à quelque chose comme ceci:

#import <UIKit/UIKit.h> 

@interface FRTableView : UITableView { 
} 

@end 

// ------------------------------ 

#import "FRTableView.h" 

@implementation FRTableView 

- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     // Initialization code 
    } 
    return self; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [super touchesEnded:touches withEvent:event]; 
    NSLog(@"Touches ended"); 

    // Bubble back up to your view controller which should be this 
    // table view's delegate. 
    if ([self delegate] && [[self delegate] respondsToSelector:@selector(touchEnded)]) 
     [[self delegate] performSelector:@selector(touchEnded)]; 
} 

@end 

Assurez-vous que vous définissez votre point de vue de la table dans Interface Builder pour utiliser votre classe personnalisée au lieu de la classe UITableView normale. Ensuite, dans votre contrôleur de vue, mettre en œuvre le sélecteur j'ai appelé touchEnded comme ceci:

- (void)touchEnded; 
{ 
    NSLog(@"Back in root view controller."); 
    [searchBar resignFirstResponder]; 
} 

Où est un SearchBar IBOutlet connecté à un UISearchBar dans Interface Builder.

0

Y u DonT essayer ...... UISearchDisplayController

Il suffit de définir ces derniers dans ur fichier .H

IBOutlet UISearchBar * mySearchBar; UISearchDisplayController * mySearchDisplayController; IBOutlet UITableView * myTableView;

et la poignée UISearchBarDelegate dans .h

maintenant dans le fichier .m il suffit d'écrire ces codes

mySearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar: mySearchBar contentsController: auto]; mySearchDisplayController.searchResultsDelegate = self; mySearchDisplayController.searchResultsDataSource = self; mySearchDisplayController.delegate = self; Je souhaite que cela pourrait aider .......

Questions connexes