2012-04-13 38 views
1

我想實現我的iOS應用程序類型「幫助模式」的上半部分抽頭控制。當用戶點擊幫助按鈕時,觸摸屏幕被UITapGestureRecognizer截獲,如果它在控件上,則會出現一個帶有幫助信息的彈出窗口。然而UITapGestureRecognizer僅檢測是否在櫃員機控制

我的問題是應用程序只檢測到我已經利用一個控制,如果我在控制的上半部分挖掘。我使用hitTest:withEvent:確定觸摸哪個視圖:

CGPoint touchPoint = [(UITapGestureRecognizer*)sender locationInView:nil]; 
UIView* touchedView = [self.view hitTest:touchPoint withEvent:nil]; 

UILabels特別難以成功打中。

視圖包含在頂部導航欄一個,但相當標準。有沒有人有類似的問題?有誰知道解決方案?

回答

2

你需要得到觸摸的位置在你看來,沒有在窗口(這是當你指定nil作爲視圖你會得到什麼)。

CGPoint touchPoint = [(UITapGestureRecognizer*)sender locationInView:self.view]; 
UIView* touchedView = [self.view hitTest:touchPoint withEvent:nil]; 
+0

謝謝!你能否解釋爲什麼當我在窗口中觸摸它時它會部分起作用? – DanielO 2012-04-13 07:36:28

+0

在這種情況下,點的y值由於某個偏移量而錯誤 - 可能與狀態欄和/或導航欄的高度有關。有時候你很幸運,即使出現了錯誤的觀點,你也會得到「正確」的看法。 – 2012-04-13 15:53:55

+0

我有同樣的問題,我的UIImageView與UITapRecognizer只報告TouchEvents從其高度的後半部分,'儘管我使用CGPoint位置= [(UITapGestureRecognizer *)發件人locationInView:sender.view]; CGPoint接觸點= [(UITapGestureRecognizer *)發件人locationInView:發送者];' – headkit 2012-06-20 10:01:15