我有一个使用 UISearchBar
和 UISearchDisplayController
的 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/