【iOS 开发】搜索栏控件 UISearchBar

本文详细介绍了如何在iOS中使用UISearchBar控件,包括创建、设置样式、添加附件视图及实现UISearchBarDelegate协议的方法,展示了搜索栏的编辑状态回调、文本变化监听等关键功能。同时提供了GitHub源码供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS 搜索栏控件 UISearchBar

1. UISearchBar 使用


// 创建 UISearchBar
let searchBar = UISearchBar(frame: CGRect(x: 15, y: 1400, width: 350, height: 150))

// 设置 UISearchBar 风格
searchBar.searchBarStyle = UISearchBar.Style.minimal // 极简风格

// 设置 UISearchBar 风格颜色
//  searchBar.barTintColor = UIColor.cyan
// 设置 UISearchBar 背景图片
//  searchBar.backgroundImage = UIImage(named: "demo")

// 设置 UISearchBar 提示文字
searchBar.placeholder = "请输入关键字"

// 设置 UISearchBar 标题
searchBar.prompt = "搜索框控件标题"

// 显示 UISearchBar 右侧取消按钮
searchBar.showsCancelButton = true

// 显示 UISearchBar 书库按钮
searchBar.showsBookmarkButton = true

// 显示 UISearchBar 搜索结果按钮
searchBar.showsSearchResultsButton = false

// 设置 UISearchBar 显示附件视图
searchBar.showsScopeBar = true

// 设置 UISearchBar 附件视图的标题
searchBar.scopeButtonTitles = ["综合", "销量", "价格", "筛选"]

// 设置 UISearchBar 附件视图默认选中的索引
searchBar.selectedScopeButtonIndex = 1

// 设置协议
searchBar.delegate = self

scrollView.addSubview(searchBar)


效果展示:
uisearchbar


2. UISearchBarDelegate 协议详解


// 搜索栏将要开始编辑时回调,返回 true 允许进入编辑态,否则不允许
func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool {
    print("searchBarShouldBeginEditing")
    return true
}

// 搜索栏已经开始编辑时回调
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    print("searchBarTextDidBeginEditing")
}

// 搜索栏将要结束编辑时回调,返回 true 允许结束编辑态,否则不允许
func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
    print("searchBarShouldEndEditing")
    return true
}

// 搜索栏已经结束编辑时回调
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
    print("searchBarTextDidEndEditing")
}

// 搜索栏的文本发生变化时回调。非常重要
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    print("searchBar, searchText: \(searchText)")
}

// 搜索栏的文本将要发生变化时回调,返回 false 则此次修改无效
func searchBar(_ searchBar: UISearchBar, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    print("searchBar, replacementText: \(text)")
    return true
}

// 点击键盘上的搜索按钮时回调
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    print("searchBarSearchButtonClicked")
}

// 点击搜索栏的书库按钮时回调
func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) {
    print("searchBarBookmarkButtonClicked")
}

// 点击搜索栏的取消按钮时回调
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    print("searchBarCancelButtonClicked")
}

// 点击搜索栏的搜索结果按钮时回调
func searchBarResultsListButtonClicked(_ searchBar: UISearchBar) {
    print("searchBarResultsListButtonClicked")
}

// 点击搜索栏的附件视图上的选项按钮时回调
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
    print("searchBar, selectedScopeButtonIndexDidChange: \(selectedScope)")
}


日志打印:
uisearchbar-logs

附 Github 源码:

ViewController.swift

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值