Нажмите на пустой UITableView, чтобы оставить панель поиска - PullRequest
1 голос
/ 11 ноября 2009

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

Ответы [ 2 ]

4 голосов
/ 11 ноября 2009

Вам нужно будет создать свой собственный класс 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

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

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

Где searchBar - это IBOutlet, подключенный к UISearchBar в Интерфейсном Разработчике.

0 голосов
/ 27 сентября 2010

Вы не пытаетесь ...... UISearchDisplayController

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

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

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

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

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

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

...