ipad:popover没有出现在适当的地方

时间:2011-03-09 10:21:24

标签: objective-c ipad uisplitviewcontroller uipopover

我有一个情况请帮助我,

1)我有一个包含自定义单元格的表 2)每个单元格有2个搜索栏和2个标签。

我尝试的是假设用户开始编辑searchBar,弹出框应该出现指向该搜索栏。

我已经实现了这个但是弹出窗口没有出现在所需的searchBar上,而且popover的高度有时也太长了

if (searchBar.tag==10) {
    NSLog(@"Display date popover");
    CGRect pickerFrame = CGRectMake(0,0,300,200);

    UIViewController *tempDateViewController=[[UIViewController alloc] init];

    UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:pickerFrame];

    [datePicker addTarget:self action:@selector(pickerChanged:) forControlEvents:UIControlEventValueChanged];

    [tempDateViewController.view addSubview:datePicker];

    if(!currentPopover)
    {

        currentPopover=[[UIPopoverController alloc] initWithContentViewController:tempDateViewController];
    }
    else {

        [currentPopover setContentViewController:tempDateViewController animated:YES];

    }

    tempDateViewController.contentSizeForViewInPopover=CGSizeMake(320, 300);
    [datePicker release];
    [tempDateViewController release];
    [currentPopover presentPopoverFromRect:searchBar.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];



}   

请帮我解决这个问题。 提前完成。

1 个答案:

答案 0 :(得分:3)

searchBar位于表格视图中的单元格内(根据您的布局,可能位于其他视图中)。最有可能的问题是self.view不是您调用它的searchBar的直接父级。因此,在self.view中使用searchBar的框架会产生意想不到的结果。

不是使用self.view并试图找出searchBar相对于哪个,你可以使用searchBar本身作为“inView”,而使用“rect”,使用searchBar的边界:

[currentPopover presentPopoverFromRect:searchBar.bounds inView:searchBar 
    permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];


接下来,要修复popover的高度,请尝试设置popover的popoverContentSize 而不是视图控制器的contentSizeForViewInPopover:

//tempDateViewController.contentSizeForViewInPopover=CGSizeMake(320, 300);
currentPopover.popoverContentSize = CGSizeMake(320, 300);


最后,一个单独的问题但是,datepicker的最小高度应该是216,而不是200:

CGRect pickerFrame = CGRectMake(0,0,300,216);