任何想法,如果有一種方法來獲得滑動手勢或觸摸的長度,以便我可以計算距離?UISwipeGestureRecognizer滑動長度
30
A
回答
53
由於SwipeGesture會在手勢結束時觸發一次您可以準確訪問位置的方法,因此無法與滑動手勢保持一定的距離。
也許你想使用UIPanGestureRecognizer。
如果可以使用平移手勢,則可以保存平底鍋的起始點,如果平底鍋已經結束計算距離。
- (void)panGesture:(UIPanGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateBegan) {
startLocation = [sender locationInView:self.view];
}
else if (sender.state == UIGestureRecognizerStateEnded) {
CGPoint stopLocation = [sender locationInView:self.view];
CGFloat dx = stopLocation.x - startLocation.x;
CGFloat dy = stopLocation.y - startLocation.y;
CGFloat distance = sqrt(dx*dx + dy*dy);
NSLog(@"Distance: %f", distance);
}
}
2
你只能這樣做一個標準的方式:記住touchBegin的觸點並比較touchEnd的點。
2
對於我們這些使用Xamarin:
void panGesture(UIPanGestureRecognizer gestureRecognizer) {
if (gestureRecognizer.State == UIGestureRecognizerState.Began) {
startLocation = gestureRecognizer.TranslationInView (view)
} else if (gestureRecognizer.State == UIGestureRecognizerState.Ended) {
PointF stopLocation = gestureRecognizer.TranslationInView (view);
float dX = stopLocation.X - startLocation.X;
float dY = stopLocation.Y - startLocation.Y;
float distance = Math.Sqrt(dX * dX + dY * dY);
System.Console.WriteLine("Distance: {0}", distance);
}
}
13
在斯威夫特
override func viewDidLoad() {
super.viewDidLoad()
// add your pan recognizer to your desired view
let panRecognizer = UIPanGestureRecognizer(target: self, action: Selector("panedView:"))
self.view.addGestureRecognizer(panRecognizer)
}
func panedView(sender:UIPanGestureRecognizer){
if (sender.state == UIGestureRecognizerState.Began) {
startLocation = sender.locationInView(self.view);
}
else if (sender.state == UIGestureRecognizerState.Ended) {
let stopLocation = sender.locationInView(self.view);
let dx = stopLocation.x - startLocation.x;
let dy = stopLocation.y - startLocation.y;
let distance = sqrt(dx*dx + dy*dy);
NSLog("Distance: %f", distance);
if distance > 400 {
//do what you want to do
}
}
}
希望幫助你斯威夫特先驅
0
func swipeAction(gesture: UIPanGestureRecognizer) {
let transition = sqrt(pow(gesture.translation(in: view).x, 2)
+ pow(gesture.translation(in: view).y, 2))
}
相關問題
- 1. 塞格動畫黑屏/毛刺&延長滑動手勢長度
- 2. UISwipeGestureRecognizer動畫
- 3. Swift UISwipeGestureRecognizer如何檢測對角線滑動?
- 4. 找到最小長度,使滑動窗口全長滑動包含給定集合的所有區間
- 5. 垂直於UIWebView的UISwipeGestureRecognizer滾動:如何避免對角線滑動?
- 6. 如果滑塊長度<2
- 7. iPhone:設置所需的滑動手勢長度
- 8. Python - 滑動窗口可變長度 - 使用Deque的好處
- 9. 輸入長度=值長度&根據值長度自動擴展
- 10. jQuery平滑滑動DIV高度
- 11. 自定義全寬度滑動滑塊
- 12. 滑動效果靈敏度
- 13. JQuery Swiper滑動高度
- 14. Silverlight寬度平滑動畫
- 15. UITabBarController與UISwipeGestureRecognizer
- 16. UISwipeGestureRecognizer的位置
- 17. UIPanGestureRecognizer重疊UISwipeGestureRecognizer
- 18. 動態滑動寬度的CSS問題
- 19. 自動字符串長度
- 20. printf%f帶動態長度
- 21. 動態增長寬度AutoCompleteTextView
- 22. 動態對象的長度
- 23. printf動態長度/大小
- 24. ui5 TreeTable動態長度
- 25. 具有動態長度
- 26. 具有動態長度
- 27. UISwipeGestureRecognizer調用兩次
- 28. 的touchesBegan取消UISwipeGestureRecognizer
- 29. UISwipeGestureRecognizer與UIScrollView衝突
- 30. 如何使用UISwipeGestureRecognizer
我想你只能得到方向fr om UISwipeGestureRecognizer。也許你可以獲得觸摸開始和結束的位置,並從中計算長度。 – picknick 2011-01-28 14:17:30