8
我想要做的是設置一堆UIControl
對象來通過相同的處理程序發送所有事件。該處理程序不需要根據觸發的UIControlEvents
類型確定適當的操作。如何確定哪個UIControlEvents類型導致UIEvent?
- (void)handleEventFromControl:(id)sender withEvent:(UIEvent *)event {
UIControl *control = sender;
NSIndexPath *indexPath = [controlIndexPaths objectForKey:control];
UIControlEvents controlEventType = event.type; //PROBLEM HERE
BOOL fire = NO;
NSNumber *eventCheck = [registeredEventsByToolkitIndex objectAtIndex:indexPath.toolkit];
fire = ([eventCheck integerValue] & controlEventType);
if(!fire) {
eventCheck = [registeredEventsByControlIndex objectAtIndex:indexPath.control];
fire = ([eventCheck integerValue] & controlEventType);
}
if(!fire) {
eventCheck = [registeredEventsByIndexPath objectForKey:indexPath];
fire = ([eventCheck integerValue] & controlEventType);
}
if(fire) {
[self.delegate toolkit:self indexPath:indexPath firedEvent:event];
}
}
盡我所知,event.type
不能這樣工作。我想避免使用UIControl
的子類,因爲對於我想要做的事來說這是嚴重的過度消耗。其餘的移動部件並不那麼重要。我要的是要檢查UIControlEvents
的方式target:action:
對在下面的設置中使用後:
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
如果有不同的方式爲target:action:
發送回UIControlEvents
的設置,我會採取。但是我沒有在文檔中看到它。或者,至少可以訪問UIControl
對象的外部以外的,以便我可以獲得我想要的類型。
http://stackoverflow.com/questions/2437875/target-action-uicontrolevents – albertamg 2011-05-25 22:34:07
@albertamg的可能重複:是的,這個問題與這一個完全相同。任何經過的選民,繼續前進,並關閉這一點。 – MrHen 2011-05-25 22:39:27