删除 UIPickerView 蓝色突出显示

问题描述 投票:0回答:1

一段时间以来,当您使用

UIPickerView
委托时,我一直在尝试删除
pickerView:viewForRow:forComponent:reusingView:
中的蓝色突出显示。

我相信这里很多人都去过那里,并且想删除

UIPickerView
中那个丑陋的蓝色突出显示。

UIPickerView
有一个
UITableView
- 而是一个
UIPickerTable
,里面有你的
UILabels/UIViews/UIImageViews
或任何东西所在的单元格。 从逻辑上讲,如果它是一个表格视图,那么我们就可以访问单元格和
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
中删除这个蓝色突出显示?

不是谈论选择指示器。 这是当您单击 pickerView 内的图像时出现的突出显示:

alt text

PS:这个pickerView没有

selectionIndicator
,是自定义的。然而,定制与这个问题无关。这个问题只是因为在选择器的单元格内有一个继承形式
UIView
的对象并且正在使用
viewForRow

ios objective-c uipickerview
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.