ipad – UIPopoverController在键盘向下滑动后没有移动到原始位置

我在iPad上用UINavigation栏显示一个popover.在第二个视图中,我有一个可以显示键盘的UISearchController.键盘向上推动弹出窗口,这很好,但是如果我现在按下UINavigation条上的“后退”按钮它会解除键盘,这很好,但弹出窗口不会滑回原来的位置.有谁知道如何解决这个问题?谢谢!
好的,所以我实际上想通了(我相信)你的问题是什么……以防万一有人从谷歌中绊倒这个,我想我会回答我是怎么做到的.这感觉就像一个黑客工作,但我还没有找到任何其他方法来做到这一点.

在调出键盘的控制器中,只要键盘解除,我就会发布通知:

[aTextField resignFirstResponder];
[[NSNotificationCenter defaultCenter] postNotificationName:@"movePopups" object:nil];

然后回到控制UIPopover的主屏幕控制器上,我添加了一个监听器:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(movePopUpToRightLocation)
                                             name:@"movePopups"
                                           object:nil];

在init里面.请务必记住删除dealloc中的侦听器以获得良好的编程习惯:

[[NSNotificationCenter defaultCenter] removeObserver:self];

因此,每当我收到键盘消失的通知时,我都会看到弹出窗口显示的按钮的引用,并直接从它重新显示:

-(void)movePopUpToRightLocation {
NSLog(@"move pop up to right location");
if (morePopUp) {
    UIBarButtonItem *barButtonItem = (UIBarButtonItem *)[[bottomToolBar items] objectAtIndex:0];
    [morePopUp presentPopoverFromBarButtonItem:barButtonItem
                      permittedArrowDirections:UIPopoverArrowDirectionDown
                                      animated:YES];            
}

}

我没有添加任何检查弹出窗口,但如果我有多种类型的弹出窗口/按钮,我可以很容易地做到这一点.但这是你可以去的基本前提.

希望能帮助到你!

相关文章
相关标签/搜索