我正在嘗試響應某些UIViews上的觸摸事件。這裏的視圖控制器看起來如何在IB:iOS - UIViews沒有響應觸摸事件
這裏的視圖層次:
我已經實現了所有四個 「觸動」 的方法如下:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
if(touch.view==locPhoneView){
locPhoneView.backgroundColor=[ColorUtility colorWithHexString:@"83d3f0"];
}
if(touch.view==locAddressView){
locAddressView.backgroundColor=[ColorUtility colorWithHexString:@"83d3f0"];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
if(touch.view==locPhoneView){
locPhoneView.backgroundColor=[UIColor whiteColor];
}
if(touch.view==locAddressView){
locAddressView.backgroundColor=[UIColor whiteColor];
}
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
}
無論我在屏幕上觸摸什麼位置,都不會發送事件。我在「touchesBegan」開頭有一個斷點,而且這段代碼從未達到。
所有視圖都已選中「已啓用用戶交互」,並已正確連接到其網點。
我錯過了什麼?在我的項目中的其他地方,我正在做同樣的事情,它工作正常。
它可能與我的根視圖是UIScrollView這一事實有關嗎?
謝謝!
編輯:我遵循了下面的建議,並將子類別UIScrollView,以便接觸發送到NextResponder。看來,我現在正在接觸,但是,視圖的背景顏色實際上是否改變的行爲是不正確的。
例如,如果我快速點擊視圖,「觸摸」方法會觸發,但背景顏色不會更改。但是,如果我點按並保持大約一秒鐘,背景顏色會根據我的預期改變。任何想法可能會導致這種奇怪的行爲?
編輯:添加一行:
[scrollView setDelaysContentTouches:NO];
我viewDidLoad方法解決了這個問題對我來說。謝謝你的幫助!