Pregunta

Tengo un tableview con una barra de búsqueda en la parte superior. Cuando hago clic en la búsqueda, se llama a primer nivel de respuesta y aparece el teclado. La barra de búsqueda tiene un botón de cancelación, pero cuando la tabla está vacía Quiero que el usuario sea capaz de aprovechar cualquier parte de las filas de la tabla vacías a renunciar a la barra de búsqueda y teclado como primer nivel de respuesta. ¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Vas a tener que crear su propia clase UITableView que reemplaza el método touchesEnded. A continuación, puede llamar de nuevo a su delegado, el cual debe ser su controlador de vista, y decirle que informe a su UISearchBar a renunciar primer nivel de respuesta.

La clase derivada UITableView sería algo como esto:

#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

Asegúrese de que usted fija su vista de tabla en el Interface Builder para utilizar la clase personalizada en lugar de la clase UITableView normal. Luego, en el controlador de vista, aplicar el selector He llamado touchEnded como esto:

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

Donde Searchbar es una IBOutlet conectado a una UISearchBar en Interface Builder.

Otros consejos

yu no tratan ...... UISearchDisplayController

Simplemente defina estos en ur archivo .h

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

y manejar UISearchBarDelegate en .h

Ahora en el archivo .m acaba de escribir estos códigos

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

Espero que esto podría ayudar .......

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top