删除UIPickerView蓝色突出显示

时间:2010-12-24 13:33:54

标签: iphone objective-c api uipickerview

一段时间以来,当您使用pickerView:viewForRow:forComponent:reusingView:委托时,我一直在尝试删除UIPickerView中的蓝色突出显示。

我相信很多人都去过那里,想要在UIPickerView中删除那个丑陋的蓝色高光。

UIPickerView有一个UITableView - 而不是UIPickerTable里面有一个单元格,其中包含UILabels/UIViews/UIImageViews或其他任何内容。 从逻辑上讲,如果它是一个tableview,那么我们可以访问单元格并setSelectionStyle:UITableViewCellSelectionStyleNone对吗? 错误。

UIPickerTable是API的私有类,不允许您在其中设置任何内容。

我设法在我的选择器中获取所有子视图

[[myPickerView subviews] objectAtIndex:someIndexValue];

所以我在pickerView:didSelectRow:pickerView:viewForRow:中尝试了此操作

NSIndexPath *path = [[[myPickerView subviews] objectAtIndex:5] indexPathForSelectedRow];
[[[[myPickerView subviews] objectAtIndex:5] cellForRowAtIndexPath:path] setSelectionStyle:UITableViewCellSelectionStyleNone];
还有这个:
[[[myPickerView subviews] objectAtIndex:5] setSelectionStyle:UITableViewCellSelectionStyleNone];

他们都没有工作'因为它是私人的。给我这个错误:

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [UIPickerTable setSelectionStyle:]:无法识别的选择器发送到实例0x64479a0'*

我知道将view的框架设置为pickerView:rowHeightForComponent:的大小然后执行:

label.UserInteractionEnabled = YES;
在以pickerView:viewForRow方法返回之前。

但它并没有真正删除突出显示,只是涵盖它并删除了UIPickerView在单击某个项目时自动滚动的功能。

是否有人知道如何从UIPickerView内部UILabel/UIView/UIImageView删除此蓝色突出显示?

谈论selectionIndicator。 这是您在pickerView中单击图像时出现的突出显示:alt text

PS:这个pickerView没有selectionIndicator并且是自定义的。但是,定制与问题无关。这个问题仅仅是因为有一个对象在选择器的单元格中继承了UIView,并且正在使用viewForRow

1 个答案:

答案 0 :(得分:0)