2012-06-18 29 views
0

我有一個MapView,我已經添加了一個UIView(0,216,320,200)包含10個UIButtons。這個UIView就像一個菜單一樣工作,顯示和隱藏某個按鈕動作。在MapView上點擊按鈕縮放地圖..?

這裏的問題是,雖然菜單顯示,當我點擊一個按鈕單ime,它完美的作品,但很快它多次使用MapView縮放(其中包含按鈕的UIView下)。這意味着觸摸事件傳遞給MapView。

細節:非常快速地點擊按鈕會導致MapView縮放,並且停止點擊時按鈕操作會執行。

我該如何預防?

回答

1

你可以做的是在按鈕的處理程序期間禁用用戶交互。因此,在選擇做:

-(void)buttonSelector:(id)sender { 
    _mapView.userInteractionEnabled = NO; 

    // ... do what your button needs to do 

    _mapView.view.userInteractionEnabled = YES; 
} 

當然,這裏假設你的按鈕獲取事件地圖視圖之前......我認爲它應該,因爲它是在地圖視圖的頂部。

爲了處理快速攻,你可以創建的UIButton的子類,並使用下面的代碼:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    _mapView.userInteractionEnabled = NO; 
} 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    _mapView.userInteractionEnabled = YES; 
} 

在Builder的類的UIButton的改變你的子類。如果您調試傳遞到touchesEnd方法的集合中的觸摸並查看tapCount,則會看到您的所有分支都被抓到。

+0

是的,但是不工作增加了UIView作爲子視圖固定它。事情是,UIView是在MapView之上,但如果快速點擊,MapView會獲得事件優先。 –

+0

啊,是的,因爲它將它作爲雙擊/多點擊手勢進行拾取。因此,按動按鈕的常規手勢是單擊 - 您是否期望用戶使用快速點擊與按鈕進行交互,或者這是一種邊緣情況? – brindy

+0

它的一個QA的情況下發送應用程序回到開發商,因爲這個問題.. :( –

0

是的,所以問題是,我加入的UIView作爲子視圖上的MapView。我通過self.view