2010-10-11 181 views
11

我在UIView中有一個UIButton,它在UIViewController中,我已經從.xib文件中分配和插入。UIButton事件'Touch Up Inside'無法正常工作。 'Touch Down'正常工作

當一個IBAction掛鉤到UIButton的「Touch Down」事件時,它會正確觸發。但如果我將它與「Touch Up Inside」事件聯繫起來,它就不會迴應。

其他事件也不起作用。 「觸摸拖動輸入」,「觸摸拖動退出」,「觸摸外部」等。

有沒有人有任何想法,爲什麼這可能是?


該按鈕是視圖控制器中的簡單圓角矩形按鈕。 我已加載視圖控制器這樣:

-(void) pushNewViewController 
{ 
    MyViewController* newViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
    [self.view addSubview:newViewController.view]; 
    [newViewController release]; 
} 

我已經添加此按鈕以圓角的矩形按鈕MyViewController,在IB。 我創建了以下IBActions:

-(IBAction) buttonTouchDown:(id)sender 
{ 
    NSLog(@"Button Touch Down Event Fired."); 
} 

-(IBAction) buttonTouchUpInside:(id)sender 
{ 
    NSLog(@"Button Touch Up Inside Event Fired."); 
} 

在IB我點擊菜單上的按鈕和拖動觸摸下壓出口MyViewController和選擇buttonTouchDown :.保存IB xib。

當我運行並測試按鈕並獲得「Button Touch Down Event Fired」日誌消息。

但是當我回到IB並將Action更改爲Touch Up Inside並將其掛接到buttonTouchUpInside:IBAction並保存時。我再次測試,我沒有迴應。

問候, 豐富

+0

問題仍然存在嗎?它起源於十月,您是否同時找到解決方案? – Axel 2011-01-10 15:07:37

回答

2

你提到的節約;在做出更改後,您是否同時保存了xib和MyViewController文件?通常當這樣的事情停止工作時,我發現我沒有保存IB中的xib或XCode中的類文件。

6

你正在發佈newViewController。

雖然加入newViewController.view作爲一個子視圖將保留認爲,newViewController對象將有0.1

2

一個保留計數你有沒有在你的 MyViewController的代碼實現的任何觸摸事件處理程序?

它看起來像你的UIButton只接收touchesBegan 事件和事件被 之前的東西取消它可以接收touchesEnded。

喜歡的東西的UIScrollView時,它的 觸摸需要被轉發到 之間決定它的子視圖,並應由 自己處理一拖通常不會。

+1

我努力解決同樣的問題,這就是解決方案。就我而言,我在父視圖上有一個UITapGestureRecognizer,它似乎在使用touchUp處理。 – alalonde 2011-12-05 22:07:24

0

大聲笑這是愚蠢的解決方案,但在xib我把它連接到buttonTouchUp以外,這是造成這個問題。也許這將有助於:)

15

我很抱歉遲到,但我有完全相同的問題。在我的情況下,這是一個UITapGestureRecognizer分配給父視圖。因此,檢查識別器也是一個好主意。

+4

非常好,這是正確的方式。我檢查了gestureRecognizer屬性,發現它們是一個「cancelsTouchesInView」,默認情況下它被設置爲YES,將其更改爲NO並解決了我的問題。 – 2013-04-30 19:54:16

+0

謝謝!一個有趣的症狀是,如果我按住按鈕幾秒鐘,那麼TouchUp事件就會觸發。它一定是TapGestureRecogniser放棄了,然後讓事件發生。 – 2014-04-24 10:32:00