2011-05-04 54 views
0

我正在寫這個應用程序,這是一個閃存卡應用程序,我想創建一個用戶界面,顯示不同的卡aka頁面,當用戶進行水平滑動時。 我想出了這個想法使用UIScrollView,但問題是,我想滾動視圖顯示下一頁,只要刷卡發生,即使我打開它的分頁應該被刷到至少有一半的視圖大小觸發,這裏是不同的兩種不同的方法,我試過了:使用UIScrollView即時刷卡

首先,我禁止從UIScrollView(使用scrolEnabled)滾動,所以它會通過滑動事件向上響應鏈,然後加右輕掃手勢識別器到相應的視圖。這種方法的問題是通常手勢識別器無法報告滑動事件。

我試過第二件事是用委託方法

- (void) scrollViewDidScroll:(UIScrollView *)scrollView{ 
    static CGFloat lastScrollOffset; 
    static BOOL hasScrolled; 

    if (lastScrollOffset > theScrollView.contentOffset.x && !hasScrolled){ 
     NSLog(@"left Swipe"); 
     [theScrollView scrollRectToVisible:CGRectMake(0, 0, 320, 480) animated:YES]; 
     if (theScrollView.contentOffset.x == 320) 
      hasScrolled = NO; 
     hasScrolled = YES; 
    } 
    if (lastScrollOffset < theScrollView.contentOffset.x && !hasScrolled){ 
     NSLog(@"right Swipe"); 
     [theScrollView scrollRectToVisible:CGRectMake(320, 0, 320, 480) animated:YES]; 
     if (theScrollView.contentOffset.x == 0) 
      hasScrolled = NO; 
     hasScrolled = YES; 
    } 
    lastScrollOffset = theScrollView.contentOffset.x; 
} 

不能正常工作。

我注意到scrollRectToVisble在發生另一次觸摸時被取消。我的假設有多準確?

有沒有更好的方法來解決這個問題?

回答

2

如果你禁用滾動,那麼你可能不希望使用一個UIScrollView :)

我將在未來卡上只是一個動畫UIView的正常內(使用UIView's animation methods)檢測刷卡時。

+0

感謝隊友:)即時通訊使用'CGAffineTransformMakeTranslation',它完美的作品,將會投票你的答案,只要我能夠。再次歡呼 – Ramuel 2011-05-05 04:10:38

+0

沒問題 - 我發佈後發現這種方法的另一個優點是不必一次性創建所有卡片,只在需要時才創建它們 - 應該有助於保持應用程序的快速和內存使用率低: ) – deanWombourne 2011-05-05 08:47:56

+0

猜想必須發佈到一個新的問題,但即時從我的意見加載從筆尖,下一張卡幾乎是相同的第一張卡,但有不同的問題,'CGAffineTransformMakeTranslation'的問題是它移動的觀點,然後我必須創建一個類似於其他視圖的視圖,所以當原始視圖移動時它將佔據它的位置。應該有更好的方法來解決這個問題? – Ramuel 2011-05-08 03:10:24

0

我不認爲有什麼叫UISwipeView,但這只是一個側面說明。

如果您擁有固定數量的卡,您可以輕鬆使用UIScrollView啓用分頁功能。

編輯:即使你有這樣的解決太多的卡是可行的你仍然可以使用具有分頁功能的UIScrollView啓用。但是這需要更多的工作。

編輯2:我剛剛意識到我在回答之前沒有正確地閱讀你的問題。我不明白你爲什麼不想使用分頁。我認爲傳呼給用戶提供了更好的反饋,而不僅僅是即時切換卡片。

+0

hehe謝謝你指出錯字:P和我真的不知道它會如何感覺像一個即時刷卡,所以,如果我設法弄清楚如何實現它,我可以更容易地比較它們。 – Ramuel 2011-05-04 17:09:52