gpt4 book ai didi

iphone - UIPickerView - 当行突出显示时触发事件

转载 作者:行者123 更新时间:2023-12-03 21:13:02 26 4
gpt4 key购买 nike

我想做的是:

显示了一个 UIPickerView。如果用户触摸选定的行,则该行将被锁定(它是多组件选择器),并且其他组件可以自由旋转。如果该行已被锁定并且用户触摸了锁定的行,则该行将被解锁并可以自由旋转。我已经使用按钮对锁定部分进行了编码。我想删除该按钮并替换为突出显示的选择器选项。

我已经尝试过:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
}

显然,只有在尚未选择该行时才会触发此事件,因此当我触摸突出显示区域中的行时,该事件不会触发。

然后我尝试了

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesBegan");
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesMoved");
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesEnded");
}

触摸选择器时,这些事件都不会触发。

关于如何检测用户何时触摸选择器中突出显示/选定的行有什么想法吗?

最佳答案

嗯——有一个简单的解决方法可以完全实现我想要完成的任务。基本上,我想让用户点击多组件选择器 View 上的选择栏,并锁定该组件,而其他组件可以自由旋转。

这是我所做的:

首先 - 关闭显示选择栏的选项。

第二 - 创建三个标签 - 每个组件一个 - 这些标签的高度和位置与选择器栏相同,但每个组件上都有一个。他们彼此看起来就像是一根坚实的柱子。

第三 - 创建一个方法来更改标签的颜色以指示它已锁定给用户。我还使用 bool 标志来让程序进程知道组件何时被锁定。

    - (IBAction) lockButtonPress:(id)sender {

// determine which button was pressed....
int btnPressed = 0;
if (leftSelectionBar.touchInside) btnPressed = 1;
if (centerSelectionBar.touchInside) btnPressed = 2;
if (rightSelectionBar.touchInside) btnPressed = 3;

// we are not going to make this difficult -- images for different states..... default in viewWillShow
switch (btnPressed) {
case 1:
if (lockSelected0) {
lockSelected0 = FALSE;
[leftSelectionBar setBackgroundColor:[UIColor blueColor]];
[leftSelectionBar setAlpha:0.25];
} else {
lockSelected0 = TRUE;
[leftSelectionBar setBackgroundColor:[UIColor redColor]];
[leftSelectionBar setAlpha:0.45];

}
break;
case 2:
if (lockSelected1) {
lockSelected1 = FALSE;
[centerSelectionBar setBackgroundColor:[UIColor blueColor]];
[centerSelectionBar setAlpha:0.25];
} else {
lockSelected1 = TRUE;
[centerSelectionBar setBackgroundColor:[UIColor redColor]];
[centerSelectionBar setAlpha:0.45];
}
break;
case 3:
if (lockSelected2) {
lockSelected2 = FALSE;
[rightSelectionBar setBackgroundColor:[UIColor blueColor]];
[rightSelectionBar setAlpha:0.25];
} else {
lockSelected2 = TRUE;
[rightSelectionBar setBackgroundColor:[UIColor redColor]];
[rightSelectionBar setAlpha:0.45];
}
break;
default:
break;
}
}

就是这样......简单;)

关于iphone - UIPickerView - 当行突出显示时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1636505/

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