2012-12-13 56 views
0

你可以從這個libk下載代碼示例: https://github.com/mriddi/ExempleCustomGestureRecognizer.git如何使我的自定義手勢識別器類實例同時工作?

創建我cusom手勢識別類是這樣的:

@protocol MyGestureRecognizerDelegate <UIGestureRecognizerDelegate> 
@optional 
-(void) willDo; 
@end 

@interface MyGestureRecognizer: UIGestureRecognizer 
{ 
    … 
} 
@property (nonatomic, assign) id <MyGestureRecognizerDelegate> delegate; 
… 
@end 

@implementation MyGestureRecognizer 
@synthesize delegate; 
… 
-(void) call{ 
    [delegate willDo]; 
} 
… 
@end 

我的視圖控制器採用MyGestureRecognizerDelegate協議。 在ViewController創建我的類的實例:

MyGestureRecognizer * grFerst; 
MyGestureRecognizer * grSecond; 
grFerst.delegate=self; 
grLeft.delegate=self; 
[self.view addGestureRecognizer: grFerst]; 
[self.view addGestureRecognizer: grSecond]; 

我想使這兩個手勢識別實例同時運行。 我嘗試添加到我的ViewController方法

shouldRecognizeSimultaneouslyWithGestureRecognizer

但這種方法從來不打電話,我檢查使用NSLog功能。

請幫我解決這個問題(允許同時使用兩個手勢識別器)。

+0

爲什麼你需要一個代表?也許有看看這篇文章http://stackoverflow.com/questions/13431806/animatewithduration-and-touchesbegan-dont-work-in-pair/13432038#13432038 – nooitaf

+0

不,我需要委託。我的程序有兩個控制輪(一個輪子負責將光標移動到X上,另一個負責移動光標Y軸)。這是一種繪畫應用程序。每個車輪都有自己的手勢識別器。當我旋轉車輪時,手勢識別器處理角度並將其傳送給它的代表。接下來,委託將recived角度轉換爲point ...我意識到我的自定義gesure識別器需要它自己的協議和委託。 – mriddi

回答

1

也許你應該分配的手勢

MyGestureRecognizer * gesture = [[MyGestureRecognizer alloc] initWithTarget:self action:nil]; 
gesture.delegate = self; 
[self.view addGestureRecognizer:gesture]; 

或者你可以在那裏使用控制輪爲目標,做所有的角度計算。然後,您委託回mainViewController。

+0

糟糕...我忘了說我有我的自定義init方法(它也稱爲超級init)。但是使用目標不能幫助我,因爲我只能調用目標的方法,並且無法發送自動對象。 – mriddi

+0

我在github上創建了代碼示例:https://github.com/mriddi/ExempleCustomGestureRecognizer.git – mriddi

+0

您可以使用控制輪作爲目標,並在其中進行所有角度計算。然後,您委託回mainViewController。 – nooitaf

相關問題