下拉搜索iOS

时间:2013-10-28 15:46:02

标签: ios iphone uitableview uisearchbar

我只需要了解如何在iPhone / iPad中实现“下拉​​搜索”功能。 我有一个UITableView,当我在tableView的开头并向下滚动时,我想显示一个searchBar(在启动时隐藏)。然后滚动到tableView的底部我想隐藏searchBar。我已经通过互联网查看了一些想法和可能的解决方案,但最终没有成功。我需要一些东西,比如向下滚动tableView以便稍微向下推。

3 个答案:

答案 0 :(得分:2)

从这个帖子:stackoverflow

此解决方案适用于ViewController.m文件:

#import "ViewController.h"

@interface ViewController() <UITableViewDelegate>

@property (nonatomic) UITableView *tableView;
@property (nonatomic) UIView *viewSearch;
@property (nonatomic) UITextField *txtSearch;

@end

@implementation ViewController

-(void)viewDidLoad {
    [super viewDidLoad];

    // view
    [self.view setBackgroundColor:[UIColor lightGrayColor]];

    // tableview
    self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 300)];
    self.tableView.delegate = self;
    [self.view addSubview:self.tableView];

    // search view
    self.viewSearch = [[UIView alloc]initWithFrame:CGRectMake(0, -50, self.view.frame.size.width, 50)];
    [self.viewSearch setBackgroundColor:[UIColor lightGrayColor]];
    [self.tableView addSubview:self.viewSearch];

    // search textfield
    self.txtSearch = [[UITextField alloc] initWithFrame:CGRectMake(20, 10, self.view.frame.size.width-40, 30)];
    [self.txtSearch setBackgroundColor:[UIColor whiteColor]];
    [self.txtSearch setPlaceholder:@"Search..."];
    [self.viewSearch addSubview:self.txtSearch];
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (decelerate) {
        [self.txtSearch resignFirstResponder];
    }

    if(scrollView.contentOffset.y < 0)
    {
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.2];

        self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
        [self.txtSearch becomeFirstResponder];

        [UIView commitAnimations];
    } else {
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.2];

        self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
        [self.txtSearch setText:@""];

        [UIView commitAnimations];
    }
}
@end

答案 1 :(得分:0)

在控制器中实现scrollViewDidScroll委托功能,并在用户将表格滚动到具有负y坐标的内容偏移时显示搜索栏。

表格视图必须启用退回才能生效。

答案 2 :(得分:0)

如果您使用UITableViewController来实现您的功能,则可以使用UIRefreshControl来实现所需的“下拉搜索”行为。表视图控制器具有refreshControl属性,您可以将其分配给它。

希望这有帮助!