表内部UIView没有滚动或接收触摸

时间:2014-01-23 22:41:28

标签: ios uitableview autolayout uitouch sdcalertview

我正在使用SDCAlertViewhttps://github.com/Scott90/SDCAlertView)及其contentView属性制作应用,以便显示UITableView。当我尝试滚动表格时会出现问题。

以下是我如何分配警报:

    SDCAlertView *soundAlertView = [[SDCAlertView alloc] initWithTitle:@"Select Sound" message:@"Select a sound." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

    //Give the alert a tag for later id'ing
    soundAlertView.tag = 2;

这是我创建表格的方法,然后将其添加到警报的子视图中:

//Create the tableview controller
    SelectionViewController *soundSelection = [self.storyboard instantiateViewControllerWithIdentifier:@"selectionCont"];

    //assign the table to a local var
    UITableView *table = soundSelection.tableView;
    UIView *tableHolderView = [[UIView alloc] initWithFrame:CGRectMake(table.frame.origin.x, table.frame.origin.y, soundAlertView.contentView.frame.size.width, 200)];

    [tableHolderView addSubview:table];


    //Add the table view to the alert view
    [soundAlertView.contentView addSubview:tableHolderView];

然后我添加约束以使tableview适合警报,然后显示警报:

   //Make sure the tableview fits in the alert
    [soundAlertView.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[tableHolderView]|"
                                                                              options:0
                                                                              metrics:nil
                                                                                views:NSDictionaryOfVariableBindings(tableHolderView)]];
    [soundAlertView show];

进行研究后,我发现我应该将contentViewcontanerView的触摸传递给tableView。虽然这可行,但它需要子类化,我不能继承子类访问contentView属性。

如何让tableView识别警报contentView识别的触摸和滚动?

由于

2 个答案:

答案 0 :(得分:0)

我想出来了,诀窍是将SDCAlertView本身子类化,然后将hitTest:发送到tableview。

答案 1 :(得分:0)

将BOUNCES UITableView的属性设置为YES,解决了我。