【问题标题】:closing UISearchBar after showing results显示结果后关闭 UISearchBar
【发布时间】:2014-02-14 05:33:17
【问题描述】:

UITableView 中,我有一个隐藏的UISearchBar 作为应用启动时的默认行为。稍后,如果用户需要搜索一个词,有UIButton 操作显示UISearchBar 和键盘。 我遇到的问题是执行搜索后,我不知道如何取消搜索或关闭UISearchBar。如果用户点击键盘搜索按钮,键盘消失,这没关系,但如果用户点击UISearchBar取消按钮,任何事情都会发生。

这是我隐藏UISearchBar的代码:

- (void)hideSearchBar {

    CGRect newBounds = self.tableView.bounds;
    if (self.tableView.bounds.origin.y < 44) {
        newBounds.origin.y = newBounds.origin.y + self.searchBar.bounds.size.height;
        self.tableView.bounds = newBounds;

    }
}

这是我显示 UISearchBar 和键盘的代码:

- (IBAction)showSearchBar:(id)sender {


    [self.searchBar becomeFirstResponder];
}

【问题讨论】:

  • 使用UISearchBarsearchBarCancelButtonClicked:委托方法并调用hideSearchBar

标签: ios iphone objective-c uitableview uisearchbar


【解决方案1】:
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

上面是UISearchBar的委托方法,当你按下取消按钮时,它用于管理UISearchBar

根据您的要求放置代码。

这样的

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    searchBar.text = @""; // clear text of search
    [searchBar resignFirstResponder]; // keyBoard is hide
    [self.searchBar setShowsCancelButton:NO animated:YES]; // remove cancel button from searchBar
   // Etc..
}

已编辑:

你可以声明和访问UISearchBar之类的,

@interface myViewController : UIViewController <UISearchBarDelegate, UISearchBarDelegate> // add delegate and datasource to .h file

@property (nonatomic, strong) UISearchBar *searchBar;

.m文件创建UISearchBar

self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f,38.0f,320.0f,0.0f)]; // set frame as you want.
[self.searchBar sizeToFit];
self.searchBar.delegate = self;
self.searchBar.tintColor = [UIColor colorWithRed:(93/255.f) green:(156/255.f) blue:(13/255.f) alpha:1.0f]; // set color as you want.
[self.view addSubview:self.searchBar];

【讨论】:

  • 感谢您的建议,但我正在记录您的方法,它从未被调用...
  • 这是我的界面部分:@interface ToDoItemsTableViewController : UITableViewController
  • 设置self.searchBar.delegate = self;
  • 我的代码是正确的,因为我正在使用它......所以可能是你这边的问题......好吧试试[self.tableView addSubview:self.searchBar];
【解决方案2】:

试试这个,

使用UISearchBarsearchBarCancelButtonClicked:委托方法并调用hideSearchBar

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 

    [searchBar setText:@""];
    [searchBar resignFirstResponder];
    [self hideSearchBar];
}

添加

- (void)viewDidLoad {
    ...
    self.searchBar.delegate = self;
}

【讨论】:

  • 感谢您的建议,但我正在记录您的方法,它从未被调用...
  • 你设置了UISearchBar的代表吗?如果没有设置为 self.searchBar.delegate = self;
  • 这条路在哪里? self.searchBar.delegate = self;
  • 如果 self.searchBarIBOutlet 在 vi​​ewDidLoad 或 Xib 中设置委托
  • 如果self.searchBar@property 则在初始化后设置委托。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 2010-11-21
  • 2013-05-19
  • 1970-01-01
相关资源
最近更新 更多