2012-09-06 70 views
0

我子類一個UILabel並添加2個屬性看起來像這樣:爲什麼我的動作不會響應選擇器?

@property (nonatomic, assign) SEL action; 
@property (nonatomic, assign) id target; 

我再實施的UIView的接觸開始的方法是這樣的:在類中

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    if ([target respondsToSelector:@selector(action)]) { 
     [target performSelector:@selector(action) onThread:[NSThread mainThread] withObject:nil waitUntilDone:NO]; 
    } 
} 

包含的子類的UILabel,我設置目標和動作是這樣的:

label.target = self; 
    labek.action = @selector(myMethod); 
    label.userInteractionEnabled = YES; 

包含該標籤的類確實具有方法myMethod,因此它顯示uld迴應它。任何想法,爲什麼它可能不?

謝謝!

回答

1

你設置你的動作像這樣label.action = @selector(myMethod);,然後用行動並將其傳遞的邊界進入第二個選擇器[target respondsToSelector:@selector(action)]。這是行不通的。

你想這樣做:

if ([target respondsToSelector:self.action]) { 
    [target performSelector:self.action onThread:[NSThread mainThread] withObject:nil waitUntilDone:NO]; 
} 

基本上,因爲目標不給迴應選擇if語句失敗。因此,它永遠不會被調用。

+0

真棒作品像一個魅力謝謝 –

0

確保標籤包含在上海華

相關問題