2011-04-20 80 views
0

我想在iPhone中做一個拖放操作:當我觸摸到一個按鈕A時,在該位置出現一個新的視圖B,如果我繼續拖動手指而不提起它,新的視圖B將被拖動周圍。將觸摸響應者更改爲iPhone中的其他視圖?

問題是,當我觸摸到按鈕A時,它會響應touchesMoved方法。我當然可以手動將它傳遞給視圖B,但它不是確定的,當我的手指移出按鈕A的界限時,現在它是將響應touchesMoved的背景視圖。有沒有簡單的方法可以通過「接觸響應者」來確定地查看B?

+0

您是否在使用TouchCancelled和TouchEnded分離對象與輸入? – 2011-04-20 14:22:25

+0

如果我還沒有舉手,我不認爲touchesEnded和touchesCancelled會被調用,對嗎? – 2011-04-20 14:24:07

+0

對不起,我錯過了解這個問題。不,你是對的,他們不會被叫(除非有中斷,然後TouchCancelled會打電話) – 2011-04-20 14:25:40

回答

1

你可以轉發觸摸事件

- (void) touchesBegan:(NSSet*) touches withEvent:(UIEvent*)event{ 
    [otherView touchesBegan:touches withEvent:event]; 
} 

,比處理中的其他視圖觸摸。 在您觸摸取消/結束超級視圖的觸摸功能之前,不會調用

+0

正如我所說,如果我的手指在按鈕A的範圍之外,這是行不通的。我需要這樣做在每個可能的迴應者看來。 – 2011-04-20 14:36:01

+0

你使用'[touch locationInView:buttonA];'? 比嘗試'[touch locationInView:[self superview]];' 去任何你想要的應用程序,觸摸一個按鈕,移動你的手指,你會看到,它的allways「touchedDown」 它不正常該按鈕失去了觸摸 – Seega 2011-04-20 14:38:20

+0

問題是不與touchesBegan我認爲,但與touchesMoved。因爲當我將手指移動到A的邊界之外時,它將不再接收觸摸事件,並且不能再將它們轉發給其他視圖。 – 2011-04-20 14:44:49