首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在UISearchBar中设置文本而不激活UISearchDisplayController

您可以通过以下步骤在 UISearchBar 中设置文本而不激活 UISearchDisplayController:

  1. 创建一个自定义的 UISearchBar 类并覆盖其 textDidChange 方法。
  2. textDidChange 方法中,将文本添加到输入框中但不激活搜索显示控制器。
  3. textDidChange 方法中,调用 setShowsSearchButton(true, animated: false) 方法来显示搜索按钮,但不要激活搜索显示控制器。
  4. 在自定义的 UISearchBar 类中,实现 canCancelContentTouches 方法,以允许搜索按钮被点击并关闭搜索显示控制器。

以下是一个示例代码:

代码语言:swift
复制
class CustomSearchBar: UISearchBar {

    override func textDidChange(_ searchText: String) {
        super.textDidChange(searchText)
        if searchText.count > 0 {
            setShowsSearchButton(true, animated: false)
        } else {
            setShowsSearchButton(false, animated: false)
        }
    }

    override func canCancelContentTouches(_ invalidating: Bool) -> Bool {
        return true
    }
}

在上面的代码中,我们覆盖了 textDidChange 方法,以便在文本更改时处理不激活 UISearchDisplayController 的逻辑。在 textDidChange 方法中,我们首先调用 setShowsSearchButton(true, animated: false) 方法来显示搜索按钮,但不要激活搜索显示控制器。然后,在自定义的 UISearchBar 类中,我们实现了 canCancelContentTouches 方法,以允许搜索按钮被点击并关闭搜索显示控制器。

注意,您需要将您的自定义 UISearchBar 类应用到您的 UISearchBar 实例。例如,在您的视图控制器中,您需要将自定义的 UISearchBar 实例设置为 searchBar 属性:

代码语言:swift
复制
override func viewDidLoad() {
    super.viewDidLoad()
    searchBar.setShowsSearchButton(true, animated: false)
    searchBar.customSearchBar = CustomSearchBar()
}

现在,当您在 UISearchBar 中输入文本时,搜索按钮将显示,但不会激活搜索显示控制器。当您点击搜索按钮时,搜索显示控制器将显示,并允许您执行搜索。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

自定义UISearchController的外观

以前我们在项目中使用搜索框的时候,如果用系统自带的控件则是使用UISearchDisplayController自从iOS8之后,系统重新给我们提供了一个搜索控件:UISearchController...在UISearchController我们无需再自己初始化UISearchBar,只需要提供searchResult展示的视图。...然而在开发,我们往往需要根据项目的风格来改变UISearchBar的外观,通过继承的方式,我们可以完全定制符合项目风格的外观,然而有些情况下我们很难短时间内完成全部的外观定制工作,譬如我们项目用的好几个旧框架...,代码充斥着各种写好的UISearchBar的展示,改动底层框架并不是一个较好地实践。...获取子View 我们在UISearchController或者是UISearchDisplayController中都可以直接获取到UISearchBar的实例,我们可以从这里改变一些UISearchBar

1.7K20
  • 实践-小细节 Ⅰ

    ---- 1.UISearchBar  &  UISearchDisplayController;   @interface  UISearchDisplayController :NSObject   ...使用UISearchBar & UISearchDisplayController时就会有那个点击搜索框后,试图上移的效果,若是不使用UISearchDisplayController单单使用UISearchBar...UIDatePicker 这个时间选择器的显示,会随着手机的语言设置不同,对于用模拟器的小伙伴,默认的显示样式是英文的,当把模拟器的语言设置成简体中文时就变成这样了 ?...这样iOS就能知道移除的是自己的kvo,不是父类的kvo,避免二次remove造成crash。 6.阴影效果不出来?...UITextField  无法设置多行输入 8.日期格式的设置细节(不带0) d  将日显示为不带前导零的数字( 1)。如果这是用户定义的数字格式的唯一字符,请使用 %d。

    1.6K20

    iOS开发-搜索栏UISearchBar和UISearchController

    最近项目中用到了搜索栏,所以在网上搜了一些相关的资料学习了一下,现在记录一下,iOS的搜索栏实现起来相对简单一点,网上也有很多参考资料,不过靠谱的不是很多,很多都是iOS 8.0之前的实现,iOS...: //设置区域-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1;} 设置区域的行数...'searchDisplayController' is deprecated: first deprecated in iOS 8.0,这么明显一个警告总不能视而不见吧 ,也就是说 iOS 8.0 推荐...UISearchDisplayController, 也就是推荐使用 UISearchDisplayDelegate ,但是可以通过 UISearchController 实现 UISearchResultsUpdating...这个委托实现上面的效果; 视图中需要声明UISearchResultsUpdating: @interface ViewController : UITableViewController<UITableViewDelegate

    2.4K70

    iOS开发之表视图爱上CoreData

    CoreData负责在Model的实体和sqllite建立关联,数据模型的实体类就相当于Java的JavaBean, CoreData的功能和JavaEE的Hibernate的功能类似,最基本是两者都有通过对实体的操作来实现对数据库的...(上面是笔者自己为了更好的理解CoreData做的简单类比,如果学过PHP的ThinkPHP框架的小伙伴们也可以和TP的ORM类比)。   那么TableView为什么会爱上CoreData呢?...UISearchDisplayController自己有一个TableView用于显示查询出来的结果,需要在通讯录添加一些代码我们的Seach Bar就可以使用了。   ...内容改变后调用的方法,我们会通过用户输入的内容进行一个模糊查询,把查询的内容添加到我们之前的fetchResultController 1 //当search文本变化时就执行下面的方法 2 -...:(UISearchBar *)searchBar { [self viewDidLoad]; }   4.因为通过search查询的结果集会显示在UISearchDisplayController

    2.2K80

    iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

    API注释 想要了解如何在代码定义搜索栏,请参考UISearchBar.想要了解更多如何显示搜索栏,请参考UISearchDisplayController....API注释 想要了解如何在代码定义搜索栏与范围栏,请参考UISearchBar. 当搜索栏出现时,范围栏会出现在它的附近。范围栏的外观与你所指定的搜索栏的外观兼容。...Value 2的布局文本和副标题中间的垂直间距会让用户专注于副标题的第一 个单词。 ? 重要 以上四种单元格样式均支持添加表格视图元素,勾选或展开标志。...4.2.12 文本视图 文本视图可以接收和展示多行文本。 ? API注释 想了解如何在代码定义文本视图,参考Text Views....但请注意,由于键盘的布局以及输入方法是由用户的系统语言设置决定的,这是你不能控制的。 iOS提供了各种不同的键盘类型,以便用户输入不同类型的文本

    10.1K51

    实践-小细节Ⅵ

    关于UISearchBar设置以及取消按钮的颜色和文字设置 效果图 UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake...searchBar.delegate =self; searchBar.layer.cornerRadius=4; searchBar.clipsToBounds = YES; //设置的话没有圆角...,直接使用 - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;会在拉到顶部再次添加的时候流畅的滚动到底部,不是这个...9.如何找到一个APP的itunes下载链接 我们可以通过 Mac上的 itunes 来获取 还可以通过浏览器来获取 在浏览器 输入 : xxxx on appstore 即可,红色框的就是手机里面的下载链接...10.如何实现数据的深拷贝 我们都知道数组中放的都是对象的地址(指针,不是对象的地址),有这样一个问题,数组A对数组B进行赋值,我们对B数组里面的对象进行操作,但是希望数组A里面的元素属性发生改变,

    94920

    IOS本地化应用

    应用本地化是分别对字符串、图片和 xib 或 storyboard 文件本地化,传统的做法是对 xib 上的字符串(包含UILabel和UIButton、UITextField等)关联一个变量,通过NSLocalizedString... MainVC.xib(German) 和 MainVC.xib(English)。但这样做未免过于繁杂,像人们常说的 tedious and useless....nib 文件能够在XCode锁定。以防止改动可本地化的属性、不可本地化的属性或者是全部属性,如图所看到的。然后将需要翻译的文本发给翻译人员或者是本地化服务提供商去翻译即可了。...依据翻译的文本进行本地化工作。 (4)版本号控制用版本号控制系统记录下你的每一次变更。 (5)測试不用怎么说,必需要的步骤。 (6a)合并逻辑变更逻辑变更一般不会影响到nib文件和本地化的工作。...(6b)本地化变更假设你做了一些本地化变更,比方改变了已本地化的文本,那么就须要从头開始这个过程。并将这些变更发给本地化人员。能够重用之前的字符串翻译,这么做会大大提高效率,但仍然非常麻烦。

    88400

    【学术】卷积神经网络教你如何还原被马赛克的文本图像

    图2:原图 然而,我们太懒了的,并且不想这样做,所以我们尝试用神经网络来自动实现图片的模糊化! 发展 得到被模糊的文本的实图和它们的模糊的副本是不容易的,因此在时间的兴趣中产生了一个训练集。...上一行显示输入图像,下一行显示输出目标。 让Fθ成为模糊图像神经网络,Y1,Y2,…,Yn成为图像,然后X1,X2,…,Xn作为模糊的副本。...第一个架构尝试的是一些卷积层,它们具有相同的输入和输出维度,也就是说,当在tf.conv2d函数填充 “SAME”设置时,才会得到结果。然而,中间层的通道数量并不是固定的。...卷积层被允许缩小图像的尺寸,不是强迫卷积的输出维度对所有的层都要一样。这相当于在tf.conv2d函数填充“VALID”设置。然而,要计算每个像素的均方差的话,输出的图像需要与输入图像尺寸相同。...这项工作的实际用途是用智能手机拍下被锐化的文本照片。图11显示了两个图像,顶部的图像是文本的图像,底部的图像是由神经网络生成的。底部图片的模糊度是非常糟糕的。罪魁祸首可能是训练数据所遵循的简单分布。

    1.7K70

    iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

    4.3.14 滑块 滑块允许用户在一个限定范围内调整某个数值或进程(下图展示的是iOS设置亮度设置的滑块,滑块的左边和右边均为自定义图形)。 ?...根据用户的选择,新的列表项可能出现或者消失,或从激活状态变为激活状态。 4.3.17 系统按钮 系统按钮执行app定义的行为。 ?...API提示: 想要了解如何在代码定义文本框,以及在文本框中支持图片和按钮,可以参考UITextField....一般来说,文本框的左侧用于表述文本框的含义,右侧用于展示附加的功能,书签。 合适的话,在文本框右侧加入清除按钮。...避免在文本详细描述“该按哪个按钮”导致文本过长。理想情况下,表意明确的警告文案和逻辑清晰的按钮文案已经足以让用户正确判断自己该按哪个按钮了。

    13.2K30

    手把手带你撸一个网易云音乐首页(三)

    而且使用这俩个方法也无法为视图指定设置圆角的方位,是要左上角呢还是右下角? 上面讲到为视图设置圆角一不小心就会造成离屏渲染,那么这个问题该如何解决呢!...该侧面图所示(图借用自作者 Leo): image 整体实现用的控件还是 UICollectionView。...我们知道在 UICollectionView 的属性,有一个分页的属性:isPagingEnabled,当设置成 true 时,每次滚动的位移量等于它自身 frame 的宽度;当设置这个分页属性,它的默认值是...由于我们工程里首页控制器是继承自 UITableViewController 的,所以我们可以直接设置它 UINavigationItem 属性的 leftBarButtonItem,titleView...这里就需要来实现 UISearchResultsUpdating 和 UISearchBarDelegate 这俩个代理了,通过 UISearchBar 获取到输入值,然后在提供的数据源查找,并 reload

    2.3K10

    iOS 9人机界面指南(一)下篇:UI设计基础 - 腾讯ISUX

    相较而言,内容样式使用17点的字号作为大尺寸,这也是默认的文本字号。 通常来说,字号与行距值在每一档的文本尺寸设置差别为1点。...唯一例外的是两种标题的样式,它们在极小、小和尺寸的设置均使用相同的字号、行距和字距。 在最小的三种文本尺寸,字间距相对较大;而在最大的三文本尺寸,字间距相对紧凑。...导航控制栏的文本使用相同的字号,内容文本的样式则使用大尺寸的设置(值为17点)。 文本总是使用常规或者重,一般不适用轻或者加粗。 通常情况下,应用整体应该使用单一字体。...如果你一定要提供用户鲜少用到的设置项,请参考App Programming Guide for iOS的The Setting Bundle部分来了解如何在代码定义它们。...另外一些技术是否整合到应用,则取决于应用本身的功能性。

    1.8K21

    使用Matplotlib绘制图的常见问题和答案

    Matplotlib是最受欢迎的二维图形库,但有时让你的图变得像你想象好并不容易。 如何更改图例上的标签名称?如何设置刻度线?如何将刻度更改为对数刻度?如何在我的图中添加注释和箭头?...如何在我的图中添加网格线? 本文收集了有关如何自定义Matplotlib图的常见问题和答案。这可以作为快速进行Matplotlib绘图的一个很好的速查表,不是Matplotlib库的完整介绍。...请注意,你必须专门调用plt.subplot(2, 2, 1)以激活该子图。 问:我的子图排列看起来不太好。我如何解决它? 这是一个你的子图太挤的例子。...将图例保存到变量L后,你可以使用L.get_text()[0]调用图例的第一项,并手动将文本设置为您想要的内容。在下面的示例,我将我的图例设置为’line123’。...plt.legend(fontsize= 10); 或者,你也可以不使用数字,: plt.legend(fontsize='x-large'); 坐标轴 问:如何命名我的x和y轴标签?

    10.7K31

    SAP应用界面开发-工具栏对象GUI Status与GUI Title

    下面介绍如何在程序创建一个工具栏按钮,并为其分配Function Key。   1.选择Application ToolBar中一个文本框,并输入自定义名称,如下图: ?   ...2.填写完成后回车或者双击,进入文本类型设置界面,将选择文本类型设置为静态文本选项(Static Text)。 ?   3.单击 ?...由于工具栏是自定义的,原系统标准功能按钮(:SAVE、BACK、CANCEL、EXIT等)都需要重新设定,维护Standard ToolBar页面各按钮字段的Function Key值。   ...所有设置完成后,保存激活,GUI Status创建成功。下面,我们需要对刚才新增的GUI Status进行调用,应用于START-OF-SELECTION事件。...3.保存并激活,在程序通过语法SET TITLEBAR 调用该GUI Title,如下: ? REPORT ZZWEI_MESSAGE.

    4.8K20

    tensorflow_cookbook--preface

    第3章,线性回归,重点是使用TensorFlow来探索各种线性回归技术,戴明,套索,脊,弹性网和逻辑回归。 我们演示如何在TensorFlow计算图中实现每个。        ...第6章,神经网络涵盖了如何在TensorFlow实现神经网络,从操作门和激活功能概念开始。然后我们显示一个浅层神经网络,并展示如何建立各种不同类型的图层。...第8章,通过说明如何在具有卷积神经网络(CNN)的图像上使用神经网络来扩展我们对神经网络的知识。我们展示如何构建一个简单的CNN用于MNIST数字识别,并将其扩展到CIFAR-10任务的彩色图像。...我们通过解释和展示TensorFlow的stylenet /神经风格和深层梦想算法来结束本章。         第9章,循环神经网络解释了如何在TensorFlow实现复发神经网络(RNN)。...第10章,采用TensorFlow进行生产,提供了将TensorFlow移植到生产环境以及如何利用多台处理设备(GPU)和设置分布在多台机器上的TensorFlow的提示和示例。

    2.4K100

    一文详解Transformers的性能优化的8种方法

    深度学习的一个众所周知的事实是,网络的底层学习输入数据的通用特征,网络顶层学习目标任务特定的高级特征,所以在对预训练模型进行微调时,一般网络底层的参数都不怎么需要变,这些都是通用的知识,需要学习的是顶层的那些参数...检查点部分不是存储整个计算图的所有中间激活以进行反向计算,而是不保存中间激活,而是在反向过程重新计算它们。它可以应用于模型的任何部分。...具体而言,在前向传播,该函数将以torch.no_grad()的方式运行,即不存储中间激活。然而,前向传播保存了输入元组和函数参数。...在NLP任务,输入大小称为文本长度,或者最大长度(max length)。然而,不同的文本具有不同的长度,为了处理这种情况,研究人员提出了填充标记和截断。...比如在输入文本相对于选定的最大长度非常短的情况下,效率就很低,需要更多的额外内存,比如我有一条文本长度512,然后其他文本长度都在10左右,那么如果将max seq设置为512,就会导致很多无效计算。

    3.5K20

    深度学习入门:理解神经网络和实践

    以下是一些可以增加到文章的内容: 激活函数 介绍不同类型的激活函数(ReLU、Sigmoid和Tanh),并解释它们在神经网络的作用。 演示如何在TensorFlow中使用激活函数层。...# 添加ReLU激活函数层 model.add(tf.keras.layers.ReLU()) 损失函数 详细解释不同类型的损失函数,均方误差损失和交叉熵损失,并讨论它们的适用情况。...mean_squared_error', metrics=['accuracy']) 批量归一化 介绍批量归一化(Batch Normalization)的概念和优势,以及如何在神经网络应用它来加速训练和提高性能...演示如何在不同框架构建相似的神经网络模型。...深度学习是一个广泛令人兴奋的领域,不断涌现出新的技术和方法,鼓励读者继续学习和探索。 总结 深度学习是一个充满潜力的领域,它已经在许多领域取得了巨大的成功。

    33050

    SwiftUI TextField进阶——格式与校验

    SwiftUI TextField进阶——格式与校验 想获得更好的阅读体验,请访问我的博客 www.fatbobman.com[1] SwiftUI的TextField可能是开发者在应用程序中最常使用的文本录入组件了...本文为【SwiftUI 进阶】系列文章的一篇,在本文中,我将介绍如何在TextField实现如下功能: •屏蔽无效字符•判断录入的内容是否满足特定条件•对录入的文本实时格式化显示 textfieldDemo1...可能的格式化解决思路 •在录入过程激活TextField内置的Formatter,让其能够在文本发生变化时对内容进行格式化•在文本发生变化时调用自己实现的Format方法,对内容进行实时格式化 对于第一种思路...如何在TextField屏蔽无效字符 现有屏蔽字符方法 在SwiftUI,可以通过设置仅使用特定的键盘类型来实现一定程度上的录入限制。....red : .primary) 上面的代码在录入的数字小于100时会将文字显示颜色设置为红色。 当然,我么也可以延续上面方案的思路,在delegate的textfield方法文本进行判断。

    8.1K20
    领券