2012-07-12 78 views
-4

我的問題是這樣的。用戶可以保持網格上的特定圖像,一旦用戶將圖像保持2秒鐘,另一個視圖在其上方彈出。現在我需要程序工作,因爲用戶的手指仍然在屏幕上,新創建的視圖將隨手指移動。現在它的工作原理是,用戶將不得不移除他們的手指並將其放回屏幕上,以便視圖隨其移動。任何想法的人?UIView堅持手指?

回答

1

如果您使用UILongPressGestureRecognizer來檢測初始按壓,您還可以使用它來跟蹤移動,因爲它會一直調用您的手勢操作方法,直到用戶擡起手指。

+0

我已經實現了UILongPressGestureRecognizer。它是這樣工作的。 LongPressOnVie然後它使用NSNotification調用視圖控制器來創建新的視圖,以上我正在按下。它創建視圖,但我無法移動視圖與刪除我的手指,然後再次按下 – Esko918 2012-07-12 18:55:31

1

有很多不同的方法可以做到這一點。想到的一點是通過視圖控制器本身管理觸摸事件。這將要求您實施-canBecomeFirstResponder以及當然touches[Began|Moved|Ended|Cancelled]:withEvent:方法。

另一種方法,如果您使用的是UIImageView來管理和顯示單個圖像,則可以對其進行子類化並通過它處理觸摸事件。在這種情況下,您實際上不會創建一個新的追蹤拖動的UIView,您可以使用NSAffineTransform使其出現「彈出」並繼續使用相同的視圖對象跟蹤位置。一旦觸摸結束,應用識別變換恢復其正常大小。轉換是可以動畫的。

編輯

在你的視圖控制器的實現,除了實現上述的觸摸方法,執行以下操作的控制器,以實際收到的觸摸事件:

@implementation MyViewController 

... 

- (BOOL)canBecomeFirstResponder 
{ 
    return YES; // Default for UIResponder is NO 
} 

... 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    ... 
    [self becomeFirstResponder]; // ensures view controller receives touch events 
} 

... 

@end 
+0

我擁有全部我的代碼已經寫在所有觸摸方法中,所以我將不得不去那條路線。你的意思是我的實現canBecomeFirstResponder,根據文檔其唯一的一個屬性返回True或False – Esko918 2012-07-12 18:53:47

+0

如果你想讓你的視圖控制器成爲第一響應者(即接收觸摸事件),你需要實現 - (BOOL) canBecomeFirstResponder {return YES; }(默認是返回「否」)。在您的視圖控制器的'-viewDidAppear:'方法中,添加'[self becomeFirstResponder];'使其成爲第一響應者。 – gschandler 2012-07-12 21:46:38