弹出框显示在表格视图中长用户输入表单的顶部

Posted

技术标签:

【中文标题】弹出框显示在表格视图中长用户输入表单的顶部【英文标题】:Popover displaying at top of long user input form in tableview 【发布时间】:2013-01-19 12:52:03 【问题描述】:

我已经查看了很多关于此的问题和答案,但似乎没有一个适合我正在做的事情。

我使用表格视图制作了一个相当长的用户输入表单(问题的标签和文本视图位于表格单元格中),当用户单击具有多选选项的文本视图时,我需要触发弹出窗口(例如下拉列表)。弹出框似乎是从 tableviewcontroller 的顶部呈现的,我不确定如何计算放置它的位置,因此它位于单元格中单击的 textview 上方。单元格中可以有多个文本视图,因此我宁愿在选择单元格时不显示弹出框,这似乎是一个选项。

现在,当我单击表单底部的文本视图时,甚至看不到弹出框。我知道我可以通过硬编码界限的反复试验找到正确的矩形,但必须有一种方法来一致地计算它。

我像这样触发弹出框:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
    Boolean returnVal = YES;
    if(self.popOverController == nil)

        switch(textField.tag)
        
            case 1:
                 [self fireDisciplinePopOver:[textField bounds]];
                returnVal = NO;
                break;

             case 2:  
                 etc...

             default:
                break;
        
    
    return returnVal;



-(void)fireDisciplinePopOver:(CGRect)rect

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
    ICAMDisciplineTableViewController *popoverTable = (ICAMDisciplineTableViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"DisciplineController"];
    self.popOverController = [[UIPopoverController alloc]initWithContentViewController:popoverTable];
    self.popOverController.delegate = self;
    popoverTable.delegate = self;
    [self.popOverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

【问题讨论】:

【参考方案1】:

我使用 segue 来呈现一个弹出框。 segue 包括弹出框的锚点视图。我所做的只是将弹出框固定在那里。我认为这应该适合你。

【讨论】:

以上是关于弹出框显示在表格视图中长用户输入表单的顶部的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7:显示搜索栏的弹出框

使用弹出框进行 Angularjs 验证

用于在滚动视图中跟踪对象的 Popover 箭头

iPad使用触摸显示弹出框?

如何使弹出点指向表格视图单元格

如何在表格视图的 didSelect 上显示弹出框