使用TableView保持UIDatePicker不滚动

时间:2013-04-06 18:18:05

标签: iphone ios objective-c uidatepicker

似乎是一个非常简单的问题,但我还没有找到解决方案:

我有一个UIDatePicker,显示何时选择了某个表视图单元格。我用以下代码显示它:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 1) {
        switch (indexPath.row) {
            case 0: {
                _alarmPicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 315, 320, 0)];
                [_alarmPicker setDatePickerMode:UIDatePickerModeTime];
                [_alarmPicker addTarget:self action:@selector(alarmPickerChanged) forControlEvents:UIControlEventValueChanged];
                [self.view addSubview:_alarmPicker];
            }
                break;

            default:
                break;
        }
    }
}

问题是,无论何时显示选择器,它都会与表的其余部分一起向上和向下滚动。除了在选择选择器时禁用表格视图上的所有滚动之外,如何保持选择器固定但表格可滚动?

3 个答案:

答案 0 :(得分:1)

您可以将其添加到关键窗口:

[[[UIApplication sharedApplication] keyWindow] addSubview:_alarmPicker];

因此它将在顶部。您正在将其添加到表视图中(假设您使用的是UITableViewController)。

答案 1 :(得分:1)

经过一些试验后,我发现这对我来说非常容易:[self.window addSubview:picker];

为了删除选择器,我使用了:[picker removeFromSuperview];

答案 2 :(得分:0)

如果您使用的是iOS 6,则可以在UIDatePicker和self.view.superview之间设置约束。这将阻止日期选择器移动:它将被“固定”到超级视图。