2010-10-21 50 views
4

我有子類UIControl,並在其中我送:UIControl子類無法獲取目標?

[self sendActionsForControlEvents:UIControlEventValueChanged]; 

當我創建的對象的實例,我添加了一個目標如下:

[starView addTarget:self action:@selector(starRatingChanged:) forControlEvents:UIControlEventValueChanged]; 

的視圖顯示了罰款,如果目標不在那裏,那麼功能運作良好。但是添加目標時,它會崩潰。任何想法爲什麼?

我的類都被定義爲:

@interface RMStarRating : UIControl {...} 

對於什麼是值得的,我建立了我的觀點在- (void)layoutSubviews。是否還有另外一種方法需要進行子類化才能正確保存目標或爲目標發送正確的操作?我認爲UIControl會爲您節省目標和行動。

UPDATE:努力提供更多信息

我設定的目標,如下所示:

RMStarRating *starView = [[RMStarRating alloc] initWithFrame:CGRectMake(10, 70, 23*5, 30)]; 
[starView addTarget:self action:@selector(starRatingChanged:) forControlEvents:UIControlEventValueChanged]; 
.... 
[self.view addSubview:starView]; 

我sendAction,根據喬丹的建議:

- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event { 
    NSLog(@"send action"); 
    [super sendAction:action to:target forEvent:event]; 
} 

我的函數調用sendActionsForControlEvents :

- (void)updateValue:(UITouch *)touch { 
    .... 
    NSLog(@"sendActionsForControlEvents"); 
    [self sendActionsForControlEvents:UIControlEventValueChanged]; 
} 

和應調用的函數(它是在頭太):

- (void)starRatingChanged:(id)sender { 
    NSLog(@"star rating changed"); 
} 

和日誌剛剛吐出:

2010-10-22 09:45:41.348 MyApp[72164:207] sendActionsForControlEvents 
2010-10-22 09:45:41.350 MyApp[72164:207] send action 

調試器有:

debugger picture

+0

它爲什麼會崩潰?什麼行代碼?調用堆棧說什麼?推測性診斷崩潰可能很困難。 – 2010-10-21 22:37:17

+0

我不知道它爲什麼崩潰,這是我想找出。它在sendActionsForControlEvents上崩潰:(除非我實現了Jordan的答案,在這種情況下,它在崩潰期間)。我想,在UIController和我的班級的連接之間出現了一些問題。日誌在死亡時不會吐出任何東西。 – RyanJM 2010-10-21 23:38:31

回答

0

好吧,我想通了,這是什麼。我很快就發佈了我的父類,因此沒有消息被髮回,即使它顯示在屏幕上。

而我最終不需要sendAction:to:forEvent。

約旦,謝謝你的幫助。

+0

哈哈 - 看,它會幫助你發佈所有的代碼,而不是片段。很難說真的在發生什麼。很高興你想出來了。 – Jordan 2010-10-22 16:13:31

0

您是否嘗試過實施

- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event 

取而代之?一個很好的例子是位於:

Can I override the UIControlEventTouchUpInside for a UISegmentedControl?

+0

感謝您的鏈接。不幸的是,通過超級沒有工作。 sendAction:to:forEvent確實被調用,但仍然崩潰。 – RyanJM 2010-10-21 23:36:33

+0

然後你有另一個問題。至少發佈崩潰日誌,以及使用sendAction和代碼進行安裝。 – Jordan 2010-10-22 00:13:49

+0

我發佈了更多信息,希望有所幫助。通過崩潰日誌,你的意思是開發日誌正確嗎? – RyanJM 2010-10-22 14:51:34