我有一個UIPopoverController,裏面有兩個視圖控制器。我建立它像這樣:UIPopoverController內部的兩個控制器:有框架問題
CommentsPopoverController *commentsPopoverController = [[CommentsPopoverController alloc] init];
self.delegate = commentsPopoverController;
commentsPopoverController.navigationItem.title = @"Comments";
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:commentsPopoverController];
popover = [[UIPopoverController alloc] initWithContentViewController:navController];
裏面我commentsPopoverController我有這樣的:
commentsViewController = [[CommentsViewController alloc] init];
commentsViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
addCommentsViewController = [[AddCommentViewController alloc] init];
addCommentsViewController.view.frame = CGRectMake(0, commentsViewController.view.bounds.size.height - 200, 320, 346);
addCommentsViewController.view.backgroundColor = [UIColor darkGrayColor];
[self.view addSubview:addCommentsViewController.view];
[self.view addSubview:commentsViewController.view];
所以,當我第一次加載酥料餅,該addCommentsViewController由commentsViewController隱藏。當我透露它,它看起來像這樣:
到目前爲止好。我遇到的問題是,從這裏,當用戶旋轉設備或顯示鍵盤或顯示鍵盤,然後旋轉設備的東西開始出現重擊。無論方向是什麼或者鍵盤是否顯示,作爲UITableView的頂部視圖控制器(commentsViewController)都會正確執行。但是底部視圖控制器(addCommentsViewController)不會自動將其origin.y更改爲直接位於頂部視圖控制器之下。
所以,我基本沒破解的廢話了我的代碼到commentsViewController下,通過不斷地計算頂視圖控制器的高度直接保持addCommentsViewController,這樣我可以調整底部視圖控制器的origin.y。這涉及在NSNotifications中放棄鍵盤的顯示/隱藏狀態以及設備的方向並不斷重新計算。非常黑客和醜陋。
所以我的問題(最終)是:有控制這些觀點的一個更簡單的方法還是我卡住盜號的我做的方式?
我現在要查看viewDidLayoutSubviews,看看它是什麼。至於鍵盤顯示/隱藏,我目前已經訂閱了NSNotifications。如果我能得到viewDidLayoutSubviews或layoutSubviews技術,我會回來接受你的答案。感謝您抽出寶貴的時間! –
我最終將viewDidLayoutSubviews添加到視圖,這是行爲不端,並在那裏做了更新,它似乎已經做了伎倆,很好的答案謝謝。 –