2013-09-23 80 views
0

我正在使用iOS SDK 6和7.我有一個覆蓋另一個視圖的UIToolbar-稱之爲「視圖B」 - 它具有用於處理水龍頭的消息處理程序touches*。當然,工具欄充滿了UIBarButtonItems。當啓用工具欄按鈕項目時,當我點擊它或拖動它時,視圖B將收到觸摸消息,這是所需的效果。但是,當某個按鈕項目被禁用時,點擊或拖動該按鈕項目會將「通過」工具欄(原樣)發送到下方的視圖B.iOS:防止點擊通過禁用的工具欄按鈕

如何確保水龍頭在工具欄是流傳下來的基本觀點,即使在水龍頭髮生在殘疾人欄按鈕的項目?

回答

1

我仍然覺得這是一個相當不直觀的行爲,但是一個解決方法相當簡單。例如,touchesBegan事件傳遞了一個通常用於考慮觸摸操作的NSSet的touches。這裏的問題是,底層視圖將接收到包含不屬於它的觸摸並且它不應該處理的一組觸摸。因此,而不是:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    for (UITouch* touch in touches) 
    { 
     ... 
    } 
} 

...使用... ...

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSSet* myTouches = [event touchesForView: self]; 

    for (UITouch* touch in myTouches) 
    { 
     ... 
    } 
} 

...從而忽視了SDK提供的觸摸,並且僅使用相關的 「查看B」 本身接觸。

0

如果您已在視圖B中手動處理觸摸事件,只需檢查觸摸事件的輕敲點是否在禁用按鈕的框架內。如果是這樣,就忽略它。