You can have both Pull-To-Refresh and Pull-To-Search in a UITableViewController quite easily.
Here's Pull to Refresh:
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
[self.tableView addSubview:refresh];
self.refreshControl = refresh;
To know when it has been 'pulled', add a target to the control:
[self.refreshControl addTarget:self action:@selector(refreshContent:) forControlEvents:UIControlEventValueChanged];
Here's "Pull-To-Search":
UISearchBar *searchBar = [[UISearchBar alloc] init];
UISearchDisplayController *searchController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
searchController.delegate = self;
searchController.searchResultsDataSource = self;
self.tableView.tableHeaderView = searchBar;
self.tableView.contentOffset = CGPointMake(0, CGRectGetHeight(searchBar.frame));
As you can see, Pull-To-Search is really just adding the searchBar as the tableHeaderView and offsetting the tableView a bit initially so the search bar isn't shown initially. That doesn't interfere with Pull-To-Refresh at all!