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

會接受這個作爲一個答案,但還是應該有什麼不對這個做的份額。非常感謝你。

相關問題