UISearchBar键盘返回键

And*_*ard 8 iphone ios

我正在使用UISearchBar将文本输入与数据库中的条目进行匹配,并在UITableView中键入匹配的结果给用户.

一切都很好,但是,我找不到改变搜索栏键盘的返回键类型的方法.默认情况下,它会使用按钮替换标准returnSearch.因为我正在进行实时搜索,因为用户输入,我不需要这个按钮并将其保持在那里并且不活动已经引发了一些可用性问题.

试图解决方案

  1. 我可以使用该setKeyboard:UIKeyboardType方法设置键盘,但是这似乎没有覆盖用键替换返回键(在标准键盘上)的默认设置,Search并且它不允许访问更改此return键.

  2. 我考虑过使用a UITextField,让我returnKeyType通过UITextInputTraits协议访问该属性.然而,我的问题在于我正在实现这个UISearchBarDelegate方法searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText,我将失去它UITextField.

有没有办法可以保持搜索栏的委托方法的功能,同时合法访问键盘的返回键?

事实上,我正在实现的几乎所有屏幕都可以在Apple的Clock应用程序中找到
屏幕截图:
在此输入图像描述

因此,非常感谢任何有关清洁解决方案的帮助.请注意return右下方的键而不是默认Search按钮'.

Mar*_*olz 20

与@sudip的答案相比,iOS 7略有不同.

for (UIView *subview in self.searchBar.subviews)
{
    for (UIView *subSubview in subview.subviews)
    {
        if ([subSubview conformsToProtocol:@protocol(UITextInputTraits)])
        {
            UITextField *textField = (UITextField *)subSubview;
            [textField setKeyboardAppearance: UIKeyboardAppearanceAlert];
            textField.returnKeyType = UIReturnKeyDone;
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


kel*_*ket 20

我没有运气就尝试了所有这些解决方案,直到我意识到在IOS8中你可以设置searchBar.returnKey = .Done或任何UIReturnKeyType你喜欢的.叹.


Neo*_*Neo 10

试试这个:

for(UIView *subView in searchBar.subviews) {
    if([subView conformsToProtocol:@protocol(UITextInputTraits)]) {
        [(UITextField *)subView setKeyboardAppearance: UIKeyboardAppearanceAlert];
    }
}

如果要关闭返回键(即,使其不执行任何操作),请将UITextField子视图上的"returnKeyType"属性设置为"UIReturnKeyDone"以及"keyboardAppearence".