2010-08-21 113 views
8

我在iPad中使用UINavigation条显示弹出窗口。在第二个视图中,我有一个可以显示键盘的UISearchController。键盘推弹出,这很好,但是,如果我现在推UINavigation栏上的“后退”按钮,它会关闭键盘,但弹出不会滑回到其原始位置。任何人都知道如何解决该问题?谢谢!UIPopoverController在键盘滑下后不能移动到原始位置

回答

9

好了,所以我其实想通了(我相信)你的问题是问什么...以防万一有人从谷歌绊倒在此,我想我会回答我是如何做的。这感觉像是一个黑客工作,但我一直无法找到任何其他方式来做到这一点。

在这带来了键盘控制器,我有它发布通知每当键盘驳斥:

[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];    
} 

}

我还没有添加任何检查其弹出它是,但我可以很容易地做到这一点,如果我有超过1型酥料饼的/它会出现的按钮。但这是你可以走的基本前提。

希望它有帮助!

+0

由于青梅按钮的问题!这对我确定的人有帮助。 – paranoidroid 2010-12-03 08:21:53

1

你也可以报名参加UIKeyboardDidHideNotification某处初始化。

[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movePopoverBack:) name:UIKeyboardDidHideNotification object:nil]; 

此代码移动酥料饼回:

- (void)movePopoverBack:(id)sender { 
    if ([self.settingsPopoverController isPopoverVisible]) { 
     [self performSelector:@selector(hidePopover) withObject:nil afterDelay:0.1]; 
     [self performSelector:@selector(movePopoverBack) withObject:nil afterDelay:0.5]; 
    } 
} 

- (void)hidePopover { 
    [self.settingsPopoverController dismissPopoverAnimated:YES]; 
} 

- (void)movePopoverBack { 
    [self.settingsPopoverController 
    presentPopoverFromBarButtonItem:self.bottomToolbar.settingsButton 
    permittedArrowDirections:UIPopoverArrowDirectionDown 
    animated:YES]; 
} 

我没有得到它不延误工作,但是这似乎是我当前的项目可以接受的。希望它能帮助别人。

0

按下后退按钮后,您应手动调用resignFirstResponder作为搜索字段(例如在viewDidDisappear之内)。

这应该帮助,但仍然会的iOS 4下进行复制时,该设备为横向与HTHE左侧

相关问题