在 iOS 的工具栏中包含 UISearchBar

Posted

技术标签:

【中文标题】在 iOS 的工具栏中包含 UISearchBar【英文标题】:Including UISearchBar in toolbar in iOS 【发布时间】:2013-02-25 10:48:52 【问题描述】:

我正在尝试将 UISearchBar 放在 .xib 文件中的工具栏上。 我可以将搜索栏拖放到工具栏上,但它显示以下错误。

ControllerName.xib:error: illegal Configuration: UISearchBar embedded in UIBarButtonItems (Only available ub iPad documents).

请指导我如何将 UISearchBar 包含在 xib 的工具栏中。

【问题讨论】:

你会在这里得到一个可能的解决方案:***.com/questions/12309441/… 无需在工具栏中添加搜索栏......您可以添加它并更改它的属性。 【参考方案1】:

据我所知,除非您使用IPAD进行开发,否则您不能在IPHONE中的UIToolBar中直接添加UISearchBar,您需要添加首先将 UISearchBar 到 customView,然后以编程方式将其添加到工具栏

// your searchbar
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(xposition, yposition, width, height)];

//create a customview and make its frame equal to your searchbar
UIView *searchBarView = [[UIView alloc] initWithFrame:searchBar.frame];

// add your searchbar to the custom view
[searchBarView addSubview:searchBar];

//finally add it to your bar item of the toolbar

UIBarButtonItem *searchBarItem =
    [[UIBarButtonItem alloc] initWithCustomView:searchBarView];

【讨论】:

这种方法不会让一个人的应用被拒绝吗?【参考方案2】:

按程序:

UIToolbar *Toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    [Toolbar sizeToFit];

    UISearchBar *testbar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,2,250,38)];

    NSMutableArray *barItems = [[NSMutableArray alloc] init];
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    [barItems addObject:flexSpace];

    UIBarButtonItem *btnCancel = [[UIBarButtonItem alloc] initWithTitle:@"Button" style:UIBarButtonItemStyleBordered target:self action:@selector(ButtonMethod)];
    [barItems addObject:btnCancel];

    [Toolbar setItems:barItems animated:YES];

    [Toolbar  addSubview:testbar];

    [self.view addSubview:Toolbar];

这里是按钮方法;

-(void)ButtonMethod

  // Write Code for ButtonMethod Method

【讨论】:

【参考方案3】:

Apple 已在 Xcode 8.2 中修复了此问题,您现在可以执行此 Interface Builder。我认为他们之前禁用了它,因为在 ios 8.0 之前的 iOS 上不允许弹出窗口,并且工具栏中的搜索栏意味着大多数时候都会使用弹出窗口。但是他们忘记在 iOS 8.0 中禁用它。

【讨论】:

以上是关于在 iOS 的工具栏中包含 UISearchBar的主要内容,如果未能解决你的问题,请参考以下文章

单击“搜索”按钮时的奇怪行为

更改 UISearchBar 搜索字段背景

UISearchBar 和 TableViewController

执行 java.io.File 或 FileInputStream 时如何引用 OSGi 包中包含的文件

在 IOS 中排除 js 文件并在 android 中包含

在 iOS 应用程序包中包含数据