Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIDatePicker不';如果包含在UITableViewCell中,则无法工作_Ios_Objective C_Uitableview_Uidatepicker - Fatal编程技术网

Ios UIDatePicker不';如果包含在UITableViewCell中,则无法工作

Ios UIDatePicker不';如果包含在UITableViewCell中,则无法工作,ios,objective-c,uitableview,uidatepicker,Ios,Objective C,Uitableview,Uidatepicker,我有一个应用程序,我经常在表视图中使用UIDatePicker。因此,我制作了定制的DatePickerTableViewCellclass,它过去是可以工作的(几年前,我不知道确切的日期)。现在,我正在iOS 14上再次测试一切,日期选择器不会对我想要滚动轮子的手势做出反应。相反,表视图似乎窃取了滚动手势。即使我没有将首选样式设置为“Wheels”,我也无法与日期选择器交互 要复制它,您需要一个具有足够单元格的表视图控制器,以使其可滚动(哪些单元格无关紧要): 当然还有DatePickerTa

我有一个应用程序,我经常在表视图中使用
UIDatePicker
。因此,我制作了定制的
DatePickerTableViewCell
class,它过去是可以工作的(几年前,我不知道确切的日期)。现在,我正在iOS 14上再次测试一切,日期选择器不会对我想要滚动轮子的手势做出反应。相反,表视图似乎窃取了滚动手势。即使我没有将首选样式设置为“Wheels”,我也无法与日期选择器交互

要复制它,您需要一个具有足够单元格的表视图控制器,以使其可滚动(哪些单元格无关紧要):

当然还有
DatePickerTableViewCell
类本身:

@interface DatePickerTableViewCell () {
    UIDatePicker *datePicker;
}

@end

@implementation DatePickerTableViewCell

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake((frame.size.width - 320) / 2, 0, 320, 216)];
        datePicker.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin
            | UIViewAutoresizingFlexibleRightMargin;
        datePicker.datePickerMode = UIDatePickerModeDate;
        if (@available(iOS 13.4, *)) {
            datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;
        }
        [self addSubview:datePicker];
    }
    return self;
}

@end
日期选择器显示,但我无法与之交互:


您将UIDatePicker添加为UITableViewCell子类的子视图,而不是UITableViewCellContentView的子视图,因此它是内容视图的同级视图而不是子视图。我的猜测是内容视图正在吸收这些内容,或者内容视图没有被正确实例化,因为它从未被使用过

当前单元格的结构:

DatePickerTableViewCell
-- DatePicker
-- UITableViewCellContentView
切换此线路:

[self addSubview:datePicker];
为此:

[self.contentView addSubview:datePicker];
在DatePickerTableViewCell的
-(id)initWithFrame:(CGRect)框架内
应允许日期选择器正确滚动,结构如下:

DatePickerTableViewCell
-- UITableViewCellContentView
---- DatePicker

谢谢,真是太棒了!我想知道它为什么(什么时候)坏了;我似乎在2014年创建了它,所以这是很多iOS版本之前的事了……很高兴这对你有用。我想它可能在iOS 9的某个地方发生了变化。我在讨论论坛上找到了这篇文章,它从iOS 9开始引用了类似的内容:
DatePickerTableViewCell
-- UITableViewCellContentView
---- DatePicker