2013-04-19 65 views
-1

我有一個iPad應用程序(XCode 4.6,Storyboards,iOS 6.2)。我有一個場景組成是這樣的:UITapGestureRecognizer不捕獲水龍頭......「捕獲」代碼應該去哪裏?

  1. 的UIView(subViewData - 佔地面積#2的右象限,下方和右側未覆蓋的#2的時間和名稱包含預約信息(卡斯特名,持續時間陰影)
  2. 的UIView(subViewGrid - 封面下半部分(圖像,它包含在整個上邊距左邊距和名稱倍。)
  3. 的UIScrollView(包括下半部視圖)
  4. 的UIView - ------ UIView(一個在窗口的上半部分,另一個在下半部分)
  5. UIViewC ontroller(名爲CalendarViewController)

calendar and sechedule

這是代碼初始化UITapGestureRecognizer在CalendarViewController的-viewDidLoad發現:

// setup for tap recognizer 
UITapGestureRecognizer *fingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
            action:@selector(singleFingerTap:)]; 
fingerTap.numberOfTapsRequired = 1; 
fingerTap.numberOfTouchesRequired = 1; 
[subViewData addGestureRecognizer:fingerTap]; 

這是subViewData代碼(#1),該沒有執行:

- (void)singleFingerTap:(UITapGestureRecognizer*)gesture { 

CGPoint pt = [gesture locationInView:self]; 
UIView *v = [self hitTest:pt withEvent:nil]; 

if(v.tag == 100) // if this is for calendar, return 
    return; 

CGRect dataRect = CGRectMake(110.0,48.0,670.0,1450); 
CGPoint dataPoint = CGPointMake(pt.x, pt.y); 

// check to see if point is within the rectangle 
if(!CGRectContainsPoint(dataRect, dataPoint)) { 
    NSLog(@"\n\nNOT within subViewData"); 
    return; 
} 
else { 
    NSLog(@"\n\nIS within subViewData"); 
} 

}

問題是爲什麼它沒有捕獲水龍頭?識別器代碼是否應該放在控制器或視圖中,據說可以獲取水龍頭?我已閱讀了有關該主題的幾乎所有內容,但無法在此特定情況下找到任何內容。非常感謝幫助。

回答

2

你說:

這是代碼初始化UITapGestureRecognizer中的CalendarViewController

-viewDidLoad發現該代碼表示​​:

[[UITapGestureRecognizer alloc] initWithTarget:self 
           action:@selector(singleFingerTap:)]; 

然後你必須把因爲你已經告訴手勢識別器目標是self,而self是CalendarViewController的一個實例。

您也說:

這是subViewData代碼(#1)沒有得到執行

但我不知道什麼是 「在subViewData」 的意思;你在界面的解釋中沒有提到任何叫做「subViewData」的東西。無論如何,這並不重要。您已指定self,因此代碼需要位於self

但是,這聽起來似乎有問題的視圖從來沒有接受過觸摸。也許它沒有暴露(即它被另一種觀點所覆蓋)。也許它的userInteractionEnabled是NO。可能有很多原因。

+0

試過了,仍然不起作用... – SpokaneDude

+0

好的,看看我的編輯添加進一步的建議。 – matt

+0

我澄清了問題,給子視圖命名......應該沒有邏輯上的原因,沒有捕獲到水龍頭。我應該提到,我正在「繪製」subViewData(這就是我如何獲得預約信息到subViewData中......它也有一個值爲2的阿爾法。 – SpokaneDude