我使用的是UIPageViewContoller創建一個類似書本的翻頁體驗處理。我的書的頁面比iPhone屏幕的整個寬度窄18px,並且錨定在屏幕的左側。然後,將我的UIPageViewController視圖的框架設置爲這些頁面的框架大小(寬度:302,高度:460)。我這樣做的目的是讓圖書具有多個頁面,頁面轉向看起來像從當前可見頁面的邊緣開始,就像iBooks應用程序的體驗一樣。從一個視圖傳遞一個UIPanGestureRecognizer要通過另一種觀點認爲
我遇到的問題是,如果有人試圖通過從屏幕的最右側進行平移來翻過頁面,通過302 px點,則平移手勢不會被UIPageViewController捕獲,並且該頁面不會被轉動。我看過很多用戶試圖以這種方式翻頁,所以我想在不改變UI設計的情況下修復這種體驗。
我的想法是,我可以從該地區搶UIPanGesture的UIPageViewController之外,並把它傳遞給UIPageViewController。我已經使用圖像視圖成功捕獲了平移手勢,我已將其作爲整個視圖的背景,但我無法弄清楚如何將手勢傳遞給UIPageViewController以處理翻頁。
- (void) viewDidLoad {
...
// Add a swipe gesture recognizer to grab page flip swipes that start from the far right of the screen, past the edge of the book page
self.panGesture = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:nil] autorelease];
[self.panGesture setDelegate:self];
[self.iv_background addGestureRecognizer:self.panGesture];
//enable gesture events on the background image
[self.iv_background setUserInteractionEnabled:YES];
...
}
#pragma mark - UIGestureRecognizer Delegates
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// test if our control subview is on-screen
if (self.pageController.view.superview != nil) {
if (gestureRecognizer == self.panGesture) {
// we touched background of the BookViewController, pass the pan to the UIPageViewController
[self.pageController.view touchesBegan:[NSSet setWithObject:touch] withEvent:UIEventTypeTouches];
return YES; // handle the touch
}
}
return YES; // handle the touch
}
你找到一個方法來做到這一點?我正在嘗試類似的東西。我有一個媒體子視圖,其中有形狀。我想將一個形狀拖出子視圖,然後繼續在主畫布視圖上拖動它。 – scooter133 2012-02-14 15:27:24
還沒有解決方案,我希望這篇文章很快就會獲得一些愛。 – chazzwozzer 2012-03-20 02:52:12
我見過幾個應用程序。 By Current認爲TopView上的手勢是透明的,然後通過較低的目標視圖。手勢然後將其座標轉換爲上視圖,並確定在該視圖中實際點擊的內容,創建拖動圖像然後移動它。只是在這一點上的想法。 – scooter133 2012-03-20 14:54:25