2014-01-06 61 views
2

我有一系列的模式視圖,我呈現,其中每個都有一個頂部的標題工具欄和UIBarButtonItem在右上角的「X」圖像,允許用戶點擊它來消除視圖。IOS UIButton沒有響應觸摸,需要多次按下,UIScreenEdge手勢干擾?

我遇到的問題是這些按鈕通常不會響應觸摸,並且在他們執行操作前似乎需要5-10次敲擊。我甚至增加了按鈕的圖像尺寸以使區域更大,但沒有幫助。然而,在模擬器中,通過點擊鼠標指針,它們似乎立即可以正常工作。

我注意到的一件事是,主視圖似乎有一個我沒有添加的UIScreenEdgePanGestureRecognizer。我認爲這是Iphone通知中心處理可以從頂部拉下來的。底部也有一個。這些干擾我的按鈕?這些手柄總是對輕微的拖拽作出響應。

我做了一個測試,我把按鈕放在屏幕中間,並且它每次都能立即運行。雖然頂部和底部是工具欄和按鈕的顯而易見的地方,但邊緣手勢識別器會導致這種衝突並且不會使所有人都發瘋似乎很奇怪。

// The button, added as part of a standard toolbar on very top of screen 
UIButton *closeButtonImage = [UIButton buttonWithType:UIButtonTypeCustom]; 
[closeButtonImage setImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal]; 
[closeButtonImage setFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width - 35, 9, 26, 26)]; 
[closeButtonImage addTarget:self action:@selector(closeClick:) forControlEvents:UIControlEventTouchDown]; 
UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithCustomView:closeButtonImage]; 

回答

2

取而代之的是:

[closeButtonImage setFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width - 35, 9, 26, 26)]; 

試試這個:

[closeButtonImage setFrame:CGRectMake(0, 0, 26, 26)]; 

原因:你是把一個按鈕一個的UIBarButtonItem內。這有點奇怪,因爲一個按鈕項目本身的一種按鈕,但它沒有什麼不對。但是,它取決於放置其內容的酒吧按鈕項目。如果您將該按鈕放在包含欄按鈕項目的邊界之外,則該按鈕將變爲無法使用。

不過,我真正的建議是不要去做你正在做的事情。只需將UIBarButtonItem本身的圖像作爲close.png圖像,並在條形按鈕項目本身上設置動作即可。這是一個按鈕。

+0

很棒!這似乎是問題,而不是手勢。他們現在反應良好。這顯然是非常有意義的,因爲框架矩形原點是相對於其父類UIBarButtonItem的。當我嘗試將UIButton添加到工具欄時,必須留有餘地,當然這不會起作用。 – Miro

0

您可以嘗試使用其他類型的「forControlEvents:」,如UIControlEventTouchUpInside