2011-10-26 57 views
1

將UIPanGestureRecognizer附加到子類UIImageView時,發生「無法識別的選擇器發送到實例」消息。我需要繼承UIImageView以保存自定義屬性,所以我只是這樣做並添加了這些屬性。我已經直接測試了在UIImageView上的平移,並且它按預期工作。但是,它不適用於子類UIImageView。下面的代碼(self.myImageView是子類的UIImageView和self.defaultImageView是的UIImageView):是否可以將UIGestureRecognizer附加到子類UIImageView?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIPanGestureRecognizer * pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveCustomImageView:)]; 
    [self.myImageView addGestureRecognizer:pgr]; //nop, getting error during runtime on start panning 
    [pgr release]; 
    ... 
    pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveUIImageView:)]; 
    [self.defaultImageView addGestureRecognizer:pgr]; //yep, that works 
    [pgr release]; 

處理程序方法的聲明是相同的結構

-(void)moveUIImageView:(UIPanGestureRecognizer *)pan{ 
    ... 
} 

-(void)moveCustomImageView:(UIPanGestureRecognizer *)pan{ 
    ... 
} 
+0

錯誤消息「無法識別的選擇發送到實例」會告訴你什麼選擇了,這是無法識別和類實例的嘗試發送它。該信息應該添加到問題中。 – morningstar

+0

我很抱歉,但它似乎是處理程序方法聲明(錯誤輸入的名稱)中的打字錯誤此外,應用@Srikar建議後,一切工作。 – Centurion

回答

2

UIImageView默認已setUserInteractionEnabled標誌設置爲NO的& setMultipleTouchEnabled設置爲NO。您是否嘗試將這些標誌轉換爲YES

您可以像這樣改變這一點 -

[self.myImageView setMultipleTouchEnabled:YES]; 
[self.myImageView setUserInteractionEnabled:YES]; 
相關問題