UIPickerView交互式区域,用于在iOS 7中切换中断

时间:2013-10-07 03:57:31

标签: iphone ipad ios7 uipickerview uipicker

当我使用多个组件制作长拾取器时,只有中心附近的组件会对点击选择功能作出反应。

例如,如果要选择所选行下的下一行,您应该只需点击它就可以将其设置为选择区域中的动画。此功能在iOS 7中仍然存在,但UIPicker中实际接受点击的区域是一个非常小的窗口,不大于200px。

有没有办法扩展这个可点击区域以包含整个UIPickerView,所以每次点击一行它都会成为选择?

编辑这里是代码,它非常标准......

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

    NSLog(@"picked %i %i" , component , row);
}


- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 4;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return 15;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return @"";
}

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

    pickersLabel =[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, view.frame.size.width , view.frame.size.height )];
    pickersLabel.text = [NSString stringWithFormat:@"thing %i" , row ];


    pickersLabel.backgroundColor = [UIColor clearColor];

    pickersLabel.backgroundColor = [UIColor colorWithRed:1/255.0 green:1/255.0 blue:2/255.0 alpha:0.05];

    pickersLabel.opaque = NO;
    [view addSubview:pickersLabel];
    return pickersLabel;
}

1 个答案:

答案 0 :(得分:0)

我在UxickerViews中遇到了大量问题,这些问题出现在.xibs而不是iOS 7中的故事板中。我不确定故事板中幕后是否有一些优化,或者这是一个直接的错误,但它值得一试 - 我现在正在使用一个来自故事板的选择器视图,我可以点击未选择的行,然后向上滚动并被选中。