2013-03-25 70 views
1

我有一個奇怪的錯誤,其中UIView裏面的兩個UIButtons,反過來在UIScrollView視圖內不能在iOS 5上點擊,但在iOS 6上工作得很好(截圖顯示的是滾動條和地圖下)iOS 5在UIScrollView UIButtons不可點擊

唯一的其他細節是滾動視圖'向上滑動',以顯示按鈕時,選擇一個站。我嘗試過在iOS 5上選擇按鈕,並且它們確實被擊中(視覺上),但事件並未被解僱。

編輯:如果我點擊並按住在模擬器中的按鈕,然後將光標在屏幕和釋放(例如到總是可見的UIView的一部分),該事件觸發。

Scroller Sample

滾動視圖本身具有以下設置,後兩個只在爲了嘗試使按鈕上的iOS 5工作被添加(試過各種組合):

self.scrollView.clipsToBounds = YES; 
self.scrollView.scrollEnabled = YES; 
self.scrollView.pagingEnabled = YES; 
self.scrollView.delaysContentTouches = NO; 
self.scrollView.canCancelContentTouches = NO; 

按鈕事件都是正確接線,用合適的目標等:

[_updatePriceButton addTarget:self action:@selector(showPriceUpdateBoxWithPrice:) forControlEvents:UIControlEventTouchUpInside]; 
[_stationDetailsButton addTarget:self action:@selector(stationDetailsSelected:) forControlEvents:UIControlEventTouchUpInside]; 

和處理程序(這裏有一個作爲樣品):

- (void)stationDetailsSelected:(id)sender { 
    if ([self.delegate respondsToSelector:@selector(stationDetailsSelected:)]) { 
     [self.delegate stationDetailsSelected:_station]; 
    } 
} 

任何幫助將是偉大的!

+0

是包含按鈕的UIView實際上足夠高以完全保存按鈕?如果情況並非如此,則觸摸事件可能無法觸及它們。快速找出方法是給視圖一個背景顏色。 – jverrijt 2013-03-25 20:35:57

+0

是的,似乎是 - 給它一個可愛的綠色,它包括按鈕。 UIView本身是由界面構建器構建的。 – Paul 2013-03-25 20:39:58

+0

只是想確認一下:'userInteractionEnabled = YES',對嗎? – rog 2013-03-25 22:23:22

回答

6

找到了罪魁禍首 - 錯誤配置UITapGestureRecognizer上的UIView的UIButtons坐:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(stationInfoViewTapped:)]; 
[infoController.view addGestureRecognizer:tap]; 

簡單地增加 '水龍頭' 的初始化後,下面的解決了iOS 5的問題:

[tap setCancelsTouchesInView:NO];