我有一个 UIWebview 包含一个 html“select”标签,显示为 在屏幕上。
当我单击下拉菜单时,UIWebview 会自动弹出一个 UIWebSelectSinglePicker View ,显示为 .
我想更改选取器 View 的背景颜色和文本颜色。我怎样才能实现这个目标?
我尝试监听 UIKeyboardWillShowNotification 事件,但此时此 View 尚未创建。
在此先感谢您的帮助。
最佳答案
我自己设法解决了这个问题。
如果有人也想即时更改 UIPickView,请看一下:
首先,在 UIKeyboardWillShowNotification 事件上添加一个监听器。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_pickerViewWillBeShown:) name:UIKeyboardWillShowNotification object:nil];
其次,当通知触发时,延迟后调用更改背景颜色方法。 <-- 这一点很重要,如果调用方法没有延迟,那么 pickview 在那一刻不存在。
- (void)_pickerViewWillBeShown:(NSNotification*)aNotification {
[self performSelector:@selector(_resetPickerViewBackgroundAfterDelay) withObject:nil afterDelay:0];
}
第三,浏览 UIApplication 窗口并找到 pickerView。您可以随心所欲地更改 pickerView。
-(void)_resetPickerViewBackgroundAfterDelay
{
UIPickerView *pickerView = nil;
for (UIWindow *uiWindow in [[UIApplication sharedApplication] windows]) {
for (UIView *uiView in [uiWindow subviews]) {
pickerView = [self _findPickerView:uiView];
}
}
if (pickerView){
[pickerView setBackgroundColor:UIColorFromRGB(0x00FF00)];
}
}
(UIPickerView *) _findPickerView:(UIView *)uiView {
if ([uiView isKindOfClass:[UIPickerView class]] ){
return (UIPickerView*) uiView;
}
if ([uiView subviews].count > 0) {
for (UIView *subview in [uiView subviews]){
UIPickerView* view = [self _findPickerView:subview];
if (view)
return view;
}
}
return nil;
}
希望对您有所帮助。
关于html - 通过html select标签创建时如何获取UIPickerView的对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19684489/