2012-07-19 22 views
2

因此,我正試圖在我的應用程序的屏幕上爲其中一個子視圖添加滑動手勢。我宣佈手勢識別如下:UISwipeGestureRecognizer不按預期方式工作

UISwipeGestureRecognizer *swiperR = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(switchStackingMode:)]; 
    [swiperR setDirection:UISwipeGestureRecognizerDirectionRight]; 
    [chart addGestureRecognizer:swiperR]; 

UISwipeGestureRecognizer *swiperL = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(switchStackingMode:)]; 
    [swiperL setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [chart addGestureRecognizer:swiperL]; 


-(void)switchStackingMode:(UISwipeGestureRecognizer *)sender { 
    NSLog(@"inside switchstack from gesture"); 
    //other stuff 
} 

當我嘗試與應用程序啓動子視圖互動,只有滑動手勢swiperL工作。我沒有迴應正確的刷卡。我最初嘗試使用方向(UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)只做一個手勢識別器,但沒有奏效,並且基於其他堆棧溢出答案,我還原爲兩個單獨的識別器。仍然沒有運氣,這讓我感到困惑。我覺得我失去了一些東西..

+0

你的代碼似乎很好,它正在檢測左右滑動。 – Leena 2012-07-19 13:33:55

+0

上述確定對我來說很好。 – Bourne 2012-07-19 13:34:26

+0

當我在圖表子視圖上向左滑動時,NSLog會打印。當我向右滑動時,沒有任何反應。 – ascendancy05 2012-07-19 13:34:48

回答

0

我在這裏回答了這個問題Setting direction for UISwipeGestureRecognizer。我相信這個錯誤是你不能讓你的「動作」名稱相同,即沒有兩個名爲「switchStackingMode」的選擇器。使用switchStackingModeRight和switchStackingModeLeft。

1

此代碼應該工作。你正在嘗試使用設備嗎?在模擬器中輕掃手勢並不那麼容易。

您只能執行一個手勢,右側和左側都可識別。 這種方式適用於左右或上下,但不適用於所有方向。

+0

我想在設備上。通過在我的「圖表」上疊加一個按鈕並添加手勢進行一些測試後,我所擁有的代碼應該可以工作。在這一點上,我覺得值得一提的是我正在與Shinobi Charts合作,也許正確的姿態被忽略了。試圖制定解決方法 – ascendancy05 2012-07-19 13:47:43

+0

也許我可以在圖表下方放置一個UIButton,並以某種方式將滑動手勢通過圖表傳遞給按鈕? – ascendancy05 2012-07-19 14:03:48

+0

或者在圖表上方添加一個清晰的UIView,並在其上添加手勢 – iSofTom 2012-07-19 14:27:07