这是一个很难解决的错误,我的ObjC-fu确实是初学者,而我对这个漂亮的错误的观察时间越长,我的信心就越发崩溃...
应用程序是需要有一个观点(我们称之为mainView
)与UIPageControl
和UIScrollView
才能有2次水平滚动。因此,我通过添加以下内容来实现它:
// This is added on viewDidLoad...
[self addChildViewController:[self.storyBoard instantiateViewControllerWithIdentifier:@"VC1"]];
[self addChildViewController:[self.storyBoard instantiateViewControllerWithIdentifier:@"VC2"]];
// Further processing of the child view controllers...
self.scrollView.pagingEnabled = YES;
for (NSUInteger i = 0; i < [self.childViewControllers count]; i++) {
UIViewController *controller = [self.childViewControllers objectAtIndex:page];
CGRect frame = self.scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[self.scrollView addSubview:controller.view];
}
// Expanding scroll view's content size for scrolling...
self.scrollView.contentSize = CGSizeMake(
scrollView.frame.size.width * [self.childViewControllers count],
scrollView.frame.size.height);
请注意,mainView
它本身配备UISearchDisplayController
了UISearchBar
隐藏的屏幕外功能。(不确定此信息是否至关重要。)
问题是与标识符VC2老二视图控制器还配备UISearchDisplayController
有一个UISearchBar
,并且当结束搜索的搜索栏驳回,动画一些如何让VC2的UISearchBar
中重新定位CGRect(0, 0, 320, 40)
的mainView
,而不是VC2的。因此,VC2被UISearchBar
“扭曲”回了VC1。
解决此问题的第一个尝试是将每个子视图控制器包含在另一个视图中,希望CGRect(0, 0, 320, 40)
VC2UISearchBar
仍保留在VC2中,但无济于事:
for (NSUInteger i = 0; i < [self.childViewControllers count]; i++) {
UIViewController *controller = [self.childViewControllers objectAtIndex:page];
CGRect frame = self.scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
//controller.view.frame = frame;
UIView *container = [[UIView alloc] initWithFrame:frame];
[container addSubview:controller.view];
[self.scrollView addSubview:container];
}
不知怎的,我猜当VC2的UISearchDisplayController
动画它UISearchBar
在frame
它的用途实际上的一个self.UIScrollView
,但我不知道。
有人能说明这个错误并将它烧死吗?在iOS7中
Main View
-------------------
| VC1 | VC2
-------------------------------------
| |_________________| <- Search Bar (This will 'warped' to VC1 at the same
| | | position on end editing)
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
-------------------------------------
找到了一个奇怪的解决方案,但是它起作用了,因为注意到在结束搜索时更改了Superview的内存地址后,SearchBar的想法从iOS 7的headerview中消失了UISearchBar
。
下面的代码段中加入任何的委派方法的可能,即viewWillAppear
,searchDisplayControllerWillEndSearch:
,searchDisplayControllerDidEndSearch:
:
if (self.searchDisplayController.searchBar.superview != self.searchDisplayController.searchContentsController.view) {
[self.searchDisplayController.searchBar removeFromSuperview];
[self.searchDisplayController.searchContentsController.view addSubview:self.searchDisplayController.searchBar];
}
将接受此作为答案,但此共享仍应有任何错误。非常感谢你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句