2014-10-09 40 views
1

斯威夫特的新品牌,但我一點一點地撿起它。我有兩個對象,我想與UISwipeGestureRecognizer同時控制。我有它的一個對象的工作,但需要能夠在屏幕的左側滑動和右側分別控制2個對象。我猜我可以實現一個聲明,如果輕掃小於這個位置控制這個對象控制這個只是不知道如何實現。這是我用來控制一個對象的東西。Swift - 編程UISwipeGestureRecognizer來單獨控制2個對象

self.swipeRightGesture.addTarget(self, action: Selector("handleRightSwipe:")) 
self.swipeRightGesture.direction = .Right 
self.swipeRightGesture.numberOfTouchesRequired = 1 
self.view?.addGestureRecognizer(self.swipeRightGesture) 

func handleRightSwipe(sender: UIGestureRecognizer) { 
    if !self.isMoving && self.isMovingUp == true{ 
     self.leftobjectmoveright() 
     self.isMoving = true 
     self.isMoving = false 
     self.isMovingUp = false 

    } 
} 

func leftobjectmoveright() { 

    self.leftobject.physicsBody?.velocity = CGVectorMake(75,0) 

} 
+0

對不起。正在努力澄清,但現在認識到其他人不那麼清楚。我需要能夠分別向上,向左和向右滑動兩個對象。我有那3個爲左側物體工作,只需要讓它爲正確的物體工作。 – Yeap 2014-10-09 18:59:03

回答

0

你打算如何讓用戶反映哪三個手勢(上,左,右)是哪個對象?你是否開始在對象頂部的手勢?如果是這樣的話,有幾種方法。

在我看來,最合乎邏輯的方法是爲每個對象創建一組單獨的手勢,然後在手勢識別器中,您可以查看gesture.view來識別哪個導致手勢識別器的選擇器被調用。例如:

let leftObjectDownSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleDownSwipe:")) 
leftObjectDownSwipe.direction = .Down 
leftObject?.addGestureRecognizer(leftObjectDownSwipe) 

let rightObjectDownSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleDownSwipe:")) 
rightObjectDownSwipe.direction = .Down 
rightObject?.addGestureRecognizer(rightObjectDownSwipe) 

隨着handleDownSwipe像這樣:

func handleDownSwipe(gesture: UISwipeGestureRecognizer) { 
    if gesture.view == leftObject { 
     println("swiped left one") 
    } else if gesture.view == rightObject { 
     println("swiped right one") 
    } 
} 

或者,如果手勢的兩個不同的對象的處理都十分不同,你可能只是給他們完全獨立的姿態處理。這只是這兩個手勢處理程序中存在多少通用代碼的問題。


或者,你可以把手勢識別器上包含這兩個視圖對象的上海華盈:

let downSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleDownSwipe:")) 
downSwipe.direction = .Down 
view.addGestureRecognizer(downSwipe) 

然後你可以有手勢識別看視圖的寬度和比較,到locationInView

func handleDownSwipe(gesture: UISwipeGestureRecognizer) { 
    let location = gesture.locationInView(gesture.view) 
    if location.x < (gesture.view!.frame.size.width/2.0) { 
     println("swiped left side") 
    } else { 
     println("swiped right side") 
    } 
} 
+0

我正在考慮讓屏幕基本分成兩個「盒子」。因此,如果滑動開始於某個座標的左側,則會移動左側的對象。如果它開始在某個座標的右側,它會移動正確的對象。這樣你就不必觸碰物體來移動它。只需在其中一個「框」中滑動即可。希望我開始有意義,並且你正在對我想要做的事情有更清晰的瞭解。 – Yeap 2014-10-09 20:34:31

+0

這就是我遇到的麻煩。只需要一些東西來啓動我。不知道如何去實施它。 – Yeap 2014-10-09 22:04:55

+0

把超級視圖上的手勢識別器,然後看'locationInView'。看修改後的答案。或者實際上添加你談到的這兩個「盒子」並使用我的原始答案,只將手勢識別器放在盒子上而不是可見的視圖對象上。無論哪種方式工作。 – Rob 2014-10-09 22:22:25

相關問題