0

这是一个非常艰难的臭虫壁球,我ObjC福是真的很初学下一个UIScrollView和我的信心崩溃的时间越长我看着这个漂亮的错误...UISearchDisplayController动画的UISearchBar在UIPageControl

的应用程序是需要有一个视图(我们称之为mainView)与UIPageControlUIScrollView为了有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本身配备有具有UISearchBar隐藏屏幕外UISearchDisplayController。 (不知道这些信息是非常重要的。)

问题与标识符VC2老二视图控制器还配备有具有UISearchBarUISearchDisplayController,并在搜索栏上结束搜索驳回,动画一些如何做VC2的UISearchBar重新定位在mainViewCGRect(0, 0, 320, 40)而不是VC2。因此VC2的UISearchBar“扭曲”回VC1。

首先尝试解决这是一个包含每个子视图控制器,另一种观点认为,希望VC2的UISearchBarCGRect(0, 0, 320, 40)仍将回到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动画它的UISearchBarframe它使用的实际上是self.UIScrollView之一,但我不确定。

任何人都可以请解释一下这个bug并将它烧死吗?这是一个在iOS7

 Main View 
------------------- 
|  VC1  |  VC2 
------------------------------------- 
|     |_________________| <- Search Bar (This will 'warped' to VC1 at the same 
|     |     | position on end editing) 
|     |     | 
|     |     | 
|     |     | 
|     |     | 
|     |     | 
|     |     | 
|     |     | 
|     |     | 
------------------------------------- 

回答

0

找到了解决方法,怪异,但它的作品,注意到了UISearchBar的上海华盈的内存地址是在结束搜索改变之后从SearchBar disappears from headerview in iOS 7上心。

下面的代码片段加入任何的委托方法的可能,即viewWillAppearsearchDisplayControllerWillEndSearch:searchDisplayControllerDidEndSearch:

if (self.searchDisplayController.searchBar.superview != self.searchDisplayController.searchContentsController.view) { 
    [self.searchDisplayController.searchBar removeFromSuperview]; 
    [self.searchDisplayController.searchContentsController.view addSubview:self.searchDisplayController.searchBar]; 
} 

会接受这个作为一个答案,但还是应该有什么不对这个做的份额。非常感谢你。

相关问题