2012-03-27 197 views
0

其他然後設置UIGestureRecognizers:在UIGestureRecognizers,澄清需要在控制器

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] 
       initWithTarget:v action:@selector(handleSwipe:)]; 
swipeGesture.direction= UISwipeGestureRecognizerDirectionUp; 
[v addGestureRecognizer:swipeGesture]; 

,使可用

-(void)handleSwipe:(UISwipeGestureRecognizer *)sender { 
    NSLog(@"Swipe detected"); 
} 

一個視圖的方法還有其它需要什麼?如果沒有,請問我錯過了什麼?當手勢模擬,的NSLog不打印

+0

。你如何模擬滑動?你用UIAutomation來做這件事嗎?那麼你也必須在x方向上移動一點。 – dasdom 2012-03-27 20:12:30

+0

我相信刷卡不過是一小段距離的快速平移。 – JAM 2012-03-27 21:20:09

回答

2

編輯

我從your recent question看到你還用平底鍋手勢識別。手勢識別器並不真正知道如何在沒有指令的情況下與對方一起玩。你有兩個主要選擇

1)一方或另一方:

[panGesture requireGestureRecognizerToFail:swipeGesture]; 

泛只有火災,如果觸摸不刷卡。或 -

2)兩者在同一時間:

順應所述的UIGestureRecognizerDelegate協議。

設置代表:

panGesture.delegate = self; 
swipeGesture.delegate = self; 

且實施方法:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
    return YES; 
} 

原始

現在你設置你的看法v作爲識別的目標,所以基本上當識別器調用檢測到滑動時:

[v handleSwipe:self]; 

您的兩個方法似乎更有可能在視圖控制器中。如果是這樣的話,那麼init方法應該是這樣的:

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] 
      initWithTarget:self action:@selector(handleSwipe:)]; 

由於v是預期的目標,並考慮到這一點你的代碼是正確的;我認爲下一個最可能的原因是您的第一塊代碼在加載視圖v之前運行。即在v已經存在之後代碼不在viewDidLoad中。如果你不確定一個簡單的日誌將確認它的存在:

NSLog(@"v is %@",v); 

如果這被證明是一條死衚衕,我們肯定會要求對這一觀點v更多信息。什麼是超類?還有其他的識別器嗎?它如何被添加到view

+0

+1我沒有看到錯誤目標的設置。 – dasdom 2012-03-27 19:42:57

+0

@dasdom謝謝。但你的回答可能是對的。這將解釋爲什麼他只是沒有得到一個日誌聲明,而不是如果我是對的,他會得到的崩潰。 – NJones 2012-03-27 19:56:11

+0

我們來看看誰是對的。 – dasdom 2012-03-27 19:57:53

2

檢查視圖是否接受用戶交互。這可以在故事板或通過[myView setUserInteractionEnabled: YES]完成。順便說一句,

+0

+1我沒有考慮過。 – NJones 2012-03-27 19:39:41

+0

試過了。好點,但問題仍未解決。 – JAM 2012-03-27 20:03:54