2017-08-04 152 views
-1

,當我把一些代碼在我的自定義按鈕自定義按鈕touchUpInside事件不火

注意我的自定義按鈕touchupinside事件不火:當我在按鍵敲擊這種方法很火,但touchUpInside方法不火

- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchBegan"); 
    [Singleton playSoundForEvent:Sound_ButtonTap]; 
} 

如果我刪除上面的代碼,然後工作正常。

上面的代碼原因:我沒有在touchupinside處處放點擊聲音。 我只想在整個項目中使用一行代碼。

+0

的touchesBegan呼籲每UIcontrols那麼你將如何處理這個 –

+0

@ Anbu.Karthik請檢查下面的答案,這將沃金對我很好,所以我的問題已經解決了。 – Vivek

回答

1

你忘了調用super

[super touchesBegan:touches withEvent:event]; 

它並沒有調用超工作的原因,是一個按鈕,需要註冊觸摸事件(touchesBegantouchesEndedtouchesMovedtouchesCanceled)是能夠將它們映射到UIControlEvent,然後才用sendAction發起行動。

的完整代碼

- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { 
    [super touchesBegan:touches withEvent:event]; 
    NSLog(@"touchBegan"); 
    [Singleton playSoundForEvent:Sound_ButtonTap]; 
} 
+0

但是,當我刪除上面的代碼,然後工作正常, – Vivek

+0

是的,因爲那麼你的自定義按鈕使用其父功能。 –

+0

我在哪裏放代碼'[超級touchesBegan:觸及事件:事件];' – Vivek

0

請檢查該代碼並再次測試,我希望它會正常工作。

[super touchesBegan:touches withEvent:event];