2009-09-03 95 views
6

我寫了一個UIControl的子類,用於跟蹤我感興趣的多個手勢。在UIControlEvents枚舉的文檔中,它指出有一系列名爲UIControlEventApplicationReserved的事件編號「可用於應用程序使用」。這是否意味着我可以自由地將這個範圍的數字用於我自己的自定義事件?您可以使用UIControlEventApplicationReserved製作自定義事件嗎?

如果是這樣,有人可以告訴我如何引發事件嗎?我能想到的做到這一點最顯而易見的方法是這樣的:

enum { 
    ... 
    MyCustomEvent = 65, 
    ... 
}; 

... 

UIEvent* customEvent; 

... 

for (id target in [self allTargets]) 
{ 
    for (NSString* action in [self actionsForTarget:target forControlEvent:MyCustomEvent]) 
    { 
      [self sendAction:NSSelectorFromString(action) to:target forEvent:customEvent]; 
    } 
} 

會連工作?

+0

好的,我知道這是一個古老的問題,但是你有什麼進展嗎? – 2010-03-08 19:31:48

回答

20

好的,這是一個老主題,但我要添加我的答案。即使我懷疑自己的應用程序是否可以使用此掩碼,但我無法確切地告訴您。

但我可以肯定地告訴你如何使用它。對於起動該值掩碼位在24位,25,26和27。你應該寫,只有使用該位,例如自己的枚舉:

enum { 
    MyPrimaryActionEvent = 1 << 24, 
    MySecondaryActionEvent = 1 << 25, 
}; 

一旦做到這一點,你可以爲這些註冊動作:

[myButton addTarget:self action:@selector(someAction:) forControlEvents: MyPrimaryActionEvent]; 

每次操作MyPrimaryActionEvent被觸發時,self都會收到消息someAction :.現在如何觸發該操作取決於按鈕本身。在自己的子類UIControl可以觸發這種改變如下:

[self sendActionsForControlEvents:MyPrimaryActionEvent]; 

這將所有動作發送到所有的MyPrimaryActionEvent事件註冊的目標。你完成了。

相關問題