在 UISearchBar 中添加按钮

9

在此输入图片描述

我想在UISearchbar内部添加一个按钮(栏),并在UISearchbar外部再添加一个按钮,如图所示。非常感谢您的帮助。

提前致谢, Naveen

3个回答

24

编辑:

如评论中@NicolasMiari所述:

iOS 7版本之后此方法已无效,因为书签按钮被呈现在搜索栏的输入框内部。


对于搜索栏内的按钮,你可以使用书签按钮并更改其图像。只需在故事板(如果您使用)中选择搜索栏,并激活“显示书签按钮”选项。然后,在您的代码中,设置您想要的图像:

[_searchBar setImage:[UIImage imageNamed:@"My-Custom-Image"] forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];

您可以使用以下委托方法来检测对此按钮的点击:

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

    NSLog(@"click");
}

6
自iOS 7之后,这种方法不再可行,因为书签按钮被渲染在搜索栏的输入文本框内部。 - Nicolas Miari
1
这个在 iOS 10 和 11 上可用。请参考 Strat Aguilar 的 Swift 4 单行代码:searchBar.setImage(UIImage(named: "myImage"), for: UISearchBarIcon.bookmark, state: .normal) - heyfrank

23

Swift 4

class ViewController: UIViewController {

   var searchController = UISearchController(searchResultsController: nil)

   override func viewDidLoad() {
      searchController.delegate = self 
      searchController.searchBar.delegate = self 
      searchController.searchBar.showsBookmarkButton = true
      searchController.searchBar.setImage(UIImage(named: "myImage"), for: .bookmark, state: .normal)
   }

}

extension ViewController: UISearchBarDelegate {

   func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) {
      print("click")
   }

}

4
在UISearchBar中添加按钮的最快方法是像这样更新书签按钮:
[self.searchDisplayController.searchBar setImage:[UIImage imageNamed:@"customImage.png"] forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];

如果您需要调整偏移量,
[self.searchDisplayController.searchBar setPositionAdjustment:UIOffsetMake(-10, 0) forSearchBarIcon:UISearchBarIconBookmark];

不要忘记在story board中激活“显示书签按钮”选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接