jos*_*ney 9 iphone uisearchbar iphone-sdk-3.0
当键盘出现时,我想设置
keyboardAppearance = UIKeyboardAppearanceAlert
Run Code Online (Sandbox Code Playgroud)
我检查了文档,看起来你只能更改keyboardType.
这可以在不违反任何Apple私有API的情况下完成吗?
小智 35
我发现这样做的最好方法是,如果你想在整个应用程序中这样做,就是在UITextField上使用Appearance.在启动时将它放在AppDelegate中.
[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark];
Run Code Online (Sandbox Code Playgroud)
小智 27
这应该这样做:
for(UIView *subView in searchBar.subviews)
if([subView isKindOfClass: [UITextField class]])
[(UITextField *)subView setKeyboardAppearance: UIKeyboardAppearanceAlert];
Run Code Online (Sandbox Code Playgroud)
没有找到任何其他方式...
这不再适用于iOS 7,因为UISearchBar视图层次结构已更改.UITextView现在是第一个子视图的子视图(例如,它在searchBar.subviews[0].subviews数组中).
更加面向未来的方法是以递归方式检查整个视图层次结构,并检查UITextInputTraits协议而不是UITextField,因为这是实际声明方法的内容.干净的方法是使用类别.首先在UISearchBar上创建一个添加此方法的类别:
- (void) setKeyboardAppearence: (UIKeyboardAppearance) appearence {
[(id<UITextInputTraits>) [self firstSubviewConformingToProtocol: @protocol(UITextInputTraits)] setKeyboardAppearance: appearence];
}
Run Code Online (Sandbox Code Playgroud)
然后在UIView上添加一个添加此方法的类别:
- (UIView *) firstSubviewConformingToProtocol: (Protocol *) pro {
for (UIView *sub in self.subviews)
if ([sub conformsToProtocol: pro])
return sub;
for (UIView *sub in self.subviews) {
UIView *ret = [sub firstSubviewConformingToProtocol: pro];
if (ret)
return ret;
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
您现在可以像在文本字段中一样在搜索栏上设置键盘外观:
[searchBar setKeyboardAppearence: UIKeyboardAppearanceDark];
Run Code Online (Sandbox Code Playgroud)
Jus*_*tin -2
KeyboardAppearance 是 UITextInputTraitsProtocol 的一个属性,这意味着该属性是通过 TextField 对象设置的。我不知道什么是警报键盘,从 SDK 来看它是适合警报的键盘。
以下是访问该属性的方法:
UITextField *myTextField = [[UITextField alloc] init];
myTextField.keyboardAppearance = UIKeyboardAppearanceAlert;
Run Code Online (Sandbox Code Playgroud)
现在,当用户点击文本字段并显示键盘时,它应该是您想要的。
| 归档时间: |
|
| 查看次数: |
7207 次 |
| 最近记录: |