我已经查看了很多关于此的问题和答案,但似乎没有一个适合我正在做的事情。
我用表格视图制作了一个相当长的用户输入表单(问题的标签和文本视图在表格单元格中),当用户单击具有多选选项的文本视图(如下拉列表)时,我需要触发弹出窗口。弹出框似乎是从 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];
}