我的問題是這樣的。用戶可以保持網格上的特定圖像,一旦用戶將圖像保持2秒鐘,另一個視圖在其上方彈出。現在我需要程序工作,因爲用戶的手指仍然在屏幕上,新創建的視圖將隨手指移動。現在它的工作原理是,用戶將不得不移除他們的手指並將其放回屏幕上,以便視圖隨其移動。任何想法的人?UIView堅持手指?
回答
如果您使用UILongPressGestureRecognizer
來檢測初始按壓,您還可以使用它來跟蹤移動,因爲它會一直調用您的手勢操作方法,直到用戶擡起手指。
有很多不同的方法可以做到這一點。想到的一點是通過視圖控制器本身管理觸摸事件。這將要求您實施-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
我擁有全部我的代碼已經寫在所有觸摸方法中,所以我將不得不去那條路線。你的意思是我的實現canBecomeFirstResponder,根據文檔其唯一的一個屬性返回True或False – Esko918 2012-07-12 18:53:47
如果你想讓你的視圖控制器成爲第一響應者(即接收觸摸事件),你需要實現 - (BOOL) canBecomeFirstResponder {return YES; }(默認是返回「否」)。在您的視圖控制器的'-viewDidAppear:'方法中,添加'[self becomeFirstResponder];'使其成爲第一響應者。 – gschandler 2012-07-12 21:46:38
- 1. UIView堅持在UIScrollView底部
- 2. UIButtons不堅持UIView邊緣
- 3. 在手指下拖動UIView
- 4. JPA的新手 - 不堅持每個包含實體時現有成員堅持
- 5. 堅持兩個實體是指一個
- 6. 學說堅持+堅持=插入+插入?
- 7. 做一個UIView拖動用手指
- 8. 獲取手指觸摸UIView的次數
- 9. 相對於手指拖動UIVIew
- 10. 只捕獲UIView 2手指UIPanGestureRecognizer
- 11. 用手指清除UIView的背景色
- 12. 用一根手指旋轉UIView iPhone,iPad
- 13. 跟蹤UIView中的多個手指
- 14. 堅持一個UIView到3.5到4英寸
- 15. 是否堅持或不堅持每頁結果數。如果我們想堅持下去,如何堅持
- 16. 堅持電話
- 17. 堅持的Android
- 18. 如何堅持
- 19. 沒有堅持
- 20. 堅持fadeTo
- 21. 堅持CoreLocation
- 22. 主義堅持:
- 23. 堅持NSOperationQueue
- 24. JPA EmbeddedId堅持
- 25. 堅持reactjs
- 26. 堅持@PostConstruct:javax.persistence.TransactionRequiredException
- 27. 不堅持
- 28. 堅持級聯
- 29. 讓SetDesktopBounds堅持
- 30. 手指畫從一個UIView類到另一個UIView類
我已經實現了UILongPressGestureRecognizer。它是這樣工作的。 LongPressOnVie然後它使用NSNotification調用視圖控制器來創建新的視圖,以上我正在按下。它創建視圖,但我無法移動視圖與刪除我的手指,然後再次按下 – Esko918 2012-07-12 18:55:31