Нажмите на пустой UITableView, чтобы отказаться от панели поиска.

StackOverflow https://stackoverflow.com/questions/1712962

Вопрос

У меня есть таблица с панелью поиска вверху.Когда я нажимаю на поиск, он вызывает службу экстренного реагирования и появляется клавиатура.На панели поиска есть кнопка отмены, но когда таблица пуста, я хочу, чтобы пользователь мог нажать в любом месте пустых строк таблицы, чтобы отказаться от панели поиска и клавиатуры в качестве первого ответчика.Как мне это сделать?

Это было полезно?

Решение

Вам придется создать свой собственный класс UITableView, который переопределяет метод touchesEnded.Затем вы можете перезвонить своему делегату, который должен быть вашим контроллером представления, и попросить его сообщить вашему UISearchBar об отказе от первого ответчика.

Производный класс UITableView будет выглядеть примерно так:

#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

Убедитесь, что вы настроили табличное представление в Interface Builder для использования своего собственного класса вместо обычного класса UITableView.Затем в контроллере представления реализуйте селектор, который я назвал touchEnded, следующим образом:

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

Где searchBar — это IBOutlet, подключенный к UISearchBar в Interface Builder.

Другие советы

Да ты не попробуй......UISearchDisplayController

Просто определите их в своем файле .h.

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

и обработать UISearchBarDelegate в .h

теперь в файле .m просто напишите этот код

mySearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:mySearchBarcontentsController:self];mySearchDisplayController.searchResultsDelegate = self;mySearchDisplayController.searchResultsDataSource = self;mySearchDisplayController.delegate = self;

Я надеюсь, что это может помочь.......

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top