Domanda

Ho un Tableview con una barra di ricerca in alto. Quando clicco sulla ricerca, essa è chiamata a first responder e appare la tastiera. La barra di ricerca ha un pulsante di annullamento, ma quando la tabella è vuota voglio che l'utente sia in grado di toccare un punto qualsiasi le righe della tabella vuote a dimettersi la barra di ricerca e la tastiera come first responder. Come posso fare questo?

È stato utile?

Soluzione

Dovrai creare la propria classe UITableView che l'override del metodo touchesEnded. Poi si può chiamare di nuovo al vostro delegato, che dovrebbe essere il vostro controller della vista, e dirgli di dire al vostro UISearchBar a dimettersi first responder.

La classe UITableView derivata sarebbe simile a questa:

#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

Assicurati di impostare la visualizzazione della tabella in Interface Builder per utilizzare la classe personalizzata, invece della normale classe di UITableView. Poi, nel tuo controller della vista, implementare il selettore Ho chiamato touchEnded in questo modo:

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

Dove Searchbar è un IBOutlet collegato ad un UISearchBar in Interface Builder.

Altri suggerimenti

Y u dont provare ...... UISearchDisplayController

Basta definire questi in ur file h

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

e gestire UISearchBarDelegate in .h

ora in un file .m solo scrivere queste codice

mySearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar: mySearchBar contentsController: self];     mySearchDisplayController.searchResultsDelegate = auto;     mySearchDisplayController.searchResultsDataSource = auto;     mySearchDisplayController.delegate = sé;

Spero che questo potrebbe aiutare .......

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top