簡體   English   中英

UIControl子類無法占用目標?

[英]UIControl subclass is unable to take a target?

我是UIControl的子類,我發送它:

[self sendActionsForControlEvents:UIControlEventValueChanged];

當我創建對象的實例時,我按如下方式添加目標:

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

視圖顯示正常,沒有目標在那里功能很好。 但是添加目標后,它會崩潰。 有什么想法嗎?

我的班級聲明:

@interface RMStarRating : UIControl {...}

為了它的價值,我在- (void)layoutSubviews設置了我的視圖。 是否有另一種方法需要進行子類化以便正確保存目標或者為目標發送正確的操作? 我以為UIControl會為您保存目標和操作。

更新:嘗試提供更多信息

我將對象設置如下:

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

調試器具有:

調試器圖片

你試過實施嗎?

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

代替? 一個很好的例子就在這里:

我可以覆蓋UISegmentedControl的UIControlEventTouchUpInside嗎?

好的,我知道它是什么。 我過早地發布了我的父類,所以即使它在屏幕上顯示,也沒有消息被發回的對象。

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

喬丹,謝謝你的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM