我試圖創建一個類似的「區域選擇器」,在「路徑」應用程序。 想法是在導航欄中有一個按鈕,它將觸發控制器滑動以顯示數據「選擇器」。移動一個UINavigationBar關閉屏幕,但下面的區域不可觸摸
鑑於以下UI結構:
主控制器是一個UINavigationController因爲我需要在以後添加的信息進一步水平。
基本上它的工作原理是這樣的:
應用與前景中的數據表開始。用戶可以點擊數據或點擊左上角的導航項。
一旦點擊了導航項目,它會移動的導航欄,工具欄和的tableView一邊露出選擇表視圖:
這是一切行動遠代碼:
- (IBAction)toggleAreaSelector:(id) sender {
float offsetX = self.tableView.frame.origin.x == 0 ? 300 : -300;
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationCurveEaseIn animations:^{
self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, offsetX, 0);
self.toolBar.frame = CGRectOffset(self.toolBar.frame, offsetX, 0);
self.tableView.frame = CGRectOffset(self.tableView.frame, offsetX, 0);
} completion:^(BOOL finished) {
self.navigationController.navigationBar.userInteractionEnabled = offsetX == 300 ? NO : YES;
self.tableView.userInteractionEnabled = offsetX == 300 ? NO : YES;
}];
}
問題是:我無法單擊選擇器中的第一個項目「區域0」。我認爲這是因爲UINavigationBar
仍然保持對該區域的「觸摸」鎖定並接收所有觸摸。
也許這也是因爲,當在界面生成器中可見時,我還可以看到我的選擇器視圖爲,其背後是,UINavigationBar
。畢竟,這可能是錯誤的做法?
感謝您的任何想法。
我不確定答案,但[此GitHub存儲庫](https://github.com/newmarcel/MKDSlideViewController)是其他人實現相同的導航想法。 – jonkroll 2012-01-10 06:46:20
良好的鏈接,謝謝!其實這一點突出了關鍵問題imho:它應該是單獨的視圖控制器的左側,中間和(如果需要)權利。這樣每個控制器都有自己的視圖,而我遇到的問題就是不可能發生。謝謝你的啓發。 :) – 2012-01-10 07:02:10