iphone - 动态更改 UISearchBar 的键盘类型

标签 iphone cocoa-touch uisearchbar

我有一个使用 UISearchBarUISearchDisplayController 的 iPhone 应用程序。搜索栏有三个范围按钮。我希望在选择特定范围按钮时键盘成为数字小键盘,但在选择任何其他范围按钮时成为默认键盘。

我已经实现了 UISearchBarDelegate selectedScopeButtonIndexDidChange:selectedScope 方法,如下所示:

- (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope
{
    switch (selectedScope) {
        case DeviceIDScopeIndex:
            searchBar.keyboardType = UIKeyboardTypeNumberPad;
            break;
        default:
            searchBar.keyboardType = UIKeyboardTypeDefault;
            break;
    }
}

我知道该方法会被调用,并且当选择相关按钮时会触发正确的情况。但屏幕键盘不会改变,除非我点击“取消”按钮隐藏键盘,然后再次点击搜索字段再次调出键盘。

有没有办法让键盘在屏幕上时自行更改,或者以编程方式隐藏它然后重新显示?

最佳答案

如果您使用的是 iOS 3.2 或更高版本,您可以调用:

[searchBar reloadInputViews]

并且它会立即切换,无需黑客攻击。至少这对我来说在 UITextField 上有效。 (我提到这一点是因为辞职/成为第一响应者技巧对我来说并不完全正确,但 reloadInputViews 做到了。)

关于iphone - 动态更改 UISearchBar 的键盘类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1594346/

相关文章:

php - 如何保护php和mySql访问以防止f?

iphone - 如何从 NSMutableString 中取出 NSString?

ios - 如何使用 UISegmentedControl 与 UITableView 和分段控件和 SearchBar 不滚动

ios - 如何从SearchBar获取Tableview中所有项目的当前项目的索引

iphone - 协议(protocol)方法未被调用,显示委托(delegate) 'nil'

iphone - 2 个相似的 iOS 应用程序 - 管理它们的最佳方式是什么?

ios - 在搜索按钮上隐藏键盘单击代码创建的搜索栏

iphone - 如何以编程方式访问 Nib 中的各种 UIView?

objective-c - 如何设置先前创建的 NSMutableString 的文本?

iPhone UISearchBar View 没有立即更新?