iOS如何禁用键盘搜索或回车键?

9

有没有办法在iOS中禁用键盘的搜索或回车按钮?

当我的UISearchBar中的文本太短而无法执行搜索时,我想禁用这些按钮。

5个回答

13
值得注意的是,您可以更改文本字段上的“enablesReturnKeyAutomatically”属性,这将导致在文本字段中没有文本时禁用返回/完成键。

// 默认值为NO(当为YES时,将自动禁用返回键当 文本小部件长度为零,并在文本小部件具有非零长度内容时自动启用)

然而,正如SK9肯定已经注意到的那样,您无法指定何时应启用和禁用此功能。

1

我找不到任何名为UISearchView的类 - 你是不是指的UISearchBar?如果是这样,请继续阅读...

您无法通过编程方式禁用(灰掉)按钮。在UISearchBarDelegate上实现searchBar:shouldChangeTextInRange:replacementText:方法,以检查替换文本@"\n"(即返回键按下),并且如果他们输入了足够的文本以允许搜索,则什么也不做。

如果您真的想禁用返回键,则可以构建自己的键盘视图(没有框架键盘可继承以获得现有功能),并从UITextView的inputView属性中返回它(这意味着还要构建自己的搜索视图)。


自己构建键盘视图的问题在于你必须考虑到所有的本地化,这不是一项微不足道的任务。实际上,我认为有一些公司正在将它们作为产品进行开发 :) - Deepak Danduprolu
这绝不是一项适合胆小者的任务。但这是我能想到的唯一方法,以获得您所寻求的确切行为。 - RyanR
+1 我同意。在框架的键盘中没有禁用按钮的方法。 - Deepak Danduprolu
这是一个不太正规的解决方案,但可能有效。创建一个继承自UISearchView的类,并覆盖文本属性,除非字符数> 3(或其他),否则返回'nil'。理论上,这应该导致“完成”键被禁用。或者,创建自己的UISearchView,它不继承自UISearchBar,您肯定可以使用该hack来禁用自定义UISearchView中的UITextField中的键盘。 - RyanR

1

有一个非常简单的解决方案,无需UI hack,也不需要访问Apple私有API等。只需在viewDidLoad中添加以下内容即可。

        yourSearchBar.enablesReturnKeyAutomatically = true

根据苹果文档:
如果将其设置为true,则当文本输入区域不包含文本时,键盘将禁用Return键。一旦用户输入一些文本,Return键会自动启用。

0

如果您正在使用uitextfield,则将enablesReturnKeyAutomatically设置为YES。这对我很有效。

textField.enablesReturnKeyAutomatically = YES / NO


0

可以删除默认 UIKeyboard 的按钮。

有关更多信息,包括一些 URL,请参见:

禁用键盘上的按键


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