2011-06-17 77 views
0

我有一個UIButton在IB中正確連接(我相信)。按鈕觸發不一致,每次我重新加載視圖以顯示更新的信息時,按鈕有時有效,有時不會。它不會給出錯誤。我無法找到一種模式,當它不工作時,每次打開視圖時都會運行相同的代碼,並且它仍然在需要時運行。除了在IB連接它,我也試圖在addTarget和viewDidLoad中刪除IB連接,但它仍然具有相同的不一致性,UIButton觸發選擇器不一致

[_buttonScreen addTarget:self action:@selector(buttonScreenClicked) forControlEvents:UIControlEventTouchUpInside]; 

如果我添加的NSLog(@「點擊」);到buttonScreenClicked我看到,該方法並不總是被調用,什麼會導致它要做到這一點,我確信,我設置:

[_buttonScreen setAlpha:0.1]; 
[_buttonScreen setHidden:NO]; 
[_buttonScreen setUserInteractionEnabled:YES]; 

我沒有圖像,文本或顏色的按鈕,但它有時仍然有效。 我在相同的視圖上使用AFKPageFlipper,但在添加AFKPageFlipper之前它仍然存在相同的問題,所以我不這麼認爲。

如果有人能指出我在任何方向開始解決這個問題,我將不勝感激。

感謝

回答

0

確保你沒有任何其他的UIView後代覆蓋按鈕(像一個透明的UIScrollView),因爲這些會先攔截觸摸事件。

還要確保包含的視圖(包含按鈕的視圖)的大小正確,默認情況下,您可以將視圖放在另一個視圖的邊界之外,並將clipsToBounds設置爲false,以便您可以看到它能夠與它互動。

+0

嗨西蒙感謝您的答覆,我會通過我的項目看看這些可能性,但目前我有XCode 4.0的另一個問題,「內部邏輯錯誤」我試圖解決這個問題。 – BrettStuart 2011-06-17 14:48:09

+0

嗨西蒙,再次感謝您的答覆,我看了你的建議,但我找不到任何東西,但我發現很奇怪,這個按鈕仍然工作不一致,但???如果按住按鈕5秒以上,它就不起作用,奇怪的是它可以工作,我根本沒有在我的代碼中使用任何定時器。究竟會造成這種情況?我正在異步下載視圖中的圖像,不知道這是否會導致任何問題,儘管所有圖像都顯示並仍然存在,除非按住按鈕約5秒鐘,否則它會在需要時運行。 – BrettStuart 2011-06-20 06:49:08

+0

@BrettStuart確保您不以任何方式從後臺線程操縱視圖層次結構。當我從其他線程意外地調用視圖的方法時,我看到了這樣的奇怪延遲。 – 2012-09-30 23:40:02

0

可以嘗試的事情:

您對按鈕有任何其他操作嗎? 你有任何其他的UIViews可能會接受按鍵(上方或下方,或未顯示) 此外,請檢查你有這個屏幕只有一個UIViewController實例。其他問題也許會因此而出現問題。 如果你不設置alpha級別,會發生什麼?

您是否僅在dealloc中正確釋放對象?

希望這會有所幫助

1

我剛剛遇到了同樣的問題並解決了它。 5秒是線索。

某處你有一個手勢識別器覆蓋與你的按鈕相同的空間。更具體地說,你有一個手勢識別器,吃你的龍頭,但不是你的LongPress。如果您只是點擊按鈕,手勢識別器會隨着您的事件一起運行;手指保持足夠長的時間,手勢識別器不再認爲它是輕擊,並且事件傳遞到您的按鈕。

儀器您的輕拍手勢識別處理程序和問題應該彈出在你身上。