gpt4 book ai didi

iphone - 覆盖 UIPickerView 中突出显示的选择

转载 作者:行者123 更新时间:2023-12-03 18:33:49 27 4
gpt4 key购买 nike

我有一个自定义的UIPickerView,我使用:

-(UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view

UILabels填充选择器。有没有办法禁用触摸时突出显示所选行的行为?

我认为这是 UIPickerView 固有的底层 UITableViewCell 的属性,我找不到更改它的方法。

最佳答案

您需要确保您的自定义 View 具有以下属性:

  1. 它的大小需要根据您的委托(delegate)方法调整为 UIPickerView 期望的相同尺寸 - pickerView:rowHeightForComponent:pickerView:widthForComponent:。如果您未指定自定义高度,则默认高度为 44。
  2. 背景颜色必须为[UIColor clearColor]
  3. View 必须捕获所有触摸。

使用 UILabel 实例作为自定义 View 时的一个问题是 UILabel 默认将 userInteractionEnabled 设置为 NO(另一方面,UIView 将此属性默认为YES)。

基于这些要求,示例代码来自Halle可以重写如下。此示例还正确地重用了先前创建的 View ,这是快速滚动性能所必需的。

- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view {

UILabel *pickerRowLabel = (UILabel *)view;
if (pickerRowLabel == nil) {
// Rule 1: width and height match what the picker view expects.
// Change as needed.
CGRect frame = CGRectMake(0.0, 0.0, 320, 44);
pickerRowLabel = [[[UILabel alloc] initWithFrame:frame] autorelease];
// Rule 2: background color is clear. The view is positioned over
// the UIPickerView chrome.
pickerRowLabel.backgroundColor = [UIColor clearColor];
// Rule 3: view must capture all touches otherwise the cell will highlight,
// because the picker view uses a UITableView in its implementation.
pickerRowLabel.userInteractionEnabled = YES;
}
pickerRowLabel.text = [pickerDataArray objectAtIndex:row];

return pickerRowLabel;
}

关于iphone - 覆盖 UIPickerView 中突出显示的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/958443/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com