दिलचस्प पोस्ट
सी # (.नेट 2.0) में विंडोज के लिए इंटरप्रोसेस कम्यूनिकेशन "मैत्रीपूर्ण" OS संस्करण नाम कैसे प्राप्त करें? जेनेरिक विधियों और विधि अधिभार क्या जावा में एक वर्ग है जो कि जुडा-टाइम अंतराल के बराबर है? रिटर्न वैल्यू के अनुसार सी ++ फ़ंक्शन को ओवरलोड करें jqGrid Chrome / Chrome Frame में सही ढंग से रेंडर नहीं करता है एक टेक्स्टरेया में लाइनों की संख्या कैसे प्राप्त करें? JavaFX "स्थान आवश्यक है।" भले ही यह एक ही पैकेज में है केस असंवेदनशील स्ट्रिंग LINQ-to-SQL में तुलना करते हैं एक अभिव्यक्ति के पहले टिलल्ड क्या करता है? एंड्रॉइड प्रोजेक्ट में लाइब्रेरी प्रोजेक्ट कैसे जोड़ूं? एक MYSQL स्व-जुड़ें कार्य कैसे करता है? आपको सी में गणित पुस्तकालय को लिंक क्यों करना है? विभिन्न पंक्ति लंबाई के साथ बहुआयामी arrays के आवंटन के लिए malloc का उपयोग करना जावा अप्राप्य कैच ब्लॉक कंपाइलर त्रुटि

सभी 4 दिशाओं में कड़ी चोट की पहचान कैसे करें

कड़ी चोट इशारा को पहचानने के लिए मुझे स्वाइप का उपयोग करना होगा और फिर सही होगा लेकिन तेज UISwipeGestureRecognizer पर सही दिशा तय है .. और मुझे नहीं पता कि यह कैसे अन्य दिशाओं का उपयोग करने के लिए है ..

वेब के समाधान से एकत्रित समाधान "सभी 4 दिशाओं में कड़ी चोट की पहचान कैसे करें"

आपको प्रत्येक दिशा के लिए एक UISwipeGestureRecognizer होना चाहिए। यह थोड़ा अजीब है क्योंकि UISwipeGestureRecognizer.direction गुण एक विकल्प-शैली बिट मुखौटा है, लेकिन प्रत्येक पहचानकर्ता केवल एक दिशा को संभाल सकता है। यदि आप चाहें तो आप सभी को एक ही हेन्डलर पर भेज सकते हैं, और उसे वहां सॉर्ट कर सकते हैं या उन्हें अलग-अलग हैंडलर पर भेज सकते हैं। यहां एक कार्यान्वयन है:

 override func viewDidLoad() { super.viewDidLoad() var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") swipeRight.direction = UISwipeGestureRecognizerDirection.Right self.view.addGestureRecognizer(swipeRight) var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:") swipeDown.direction = UISwipeGestureRecognizerDirection.Down self.view.addGestureRecognizer(swipeDown) } func respondToSwipeGesture(gesture: UIGestureRecognizer) { if let swipeGesture = gesture as? UISwipeGestureRecognizer { switch swipeGesture.direction { case UISwipeGestureRecognizerDirection.Right: print("Swiped right") case UISwipeGestureRecognizerDirection.Down: print("Swiped down") case UISwipeGestureRecognizerDirection.Left: print("Swiped left") case UISwipeGestureRecognizerDirection.Up: print("Swiped up") default: break } } } 

स्विफ्ट 3:

 override func viewDidLoad() { super.viewDidLoad() let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture)) swipeRight.direction = UISwipeGestureRecognizerDirection.right self.view.addGestureRecognizer(swipeRight) let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture)) swipeDown.direction = UISwipeGestureRecognizerDirection.down self.view.addGestureRecognizer(swipeDown) } func respondToSwipeGesture(gesture: UIGestureRecognizer) { if let swipeGesture = gesture as? UISwipeGestureRecognizer { switch swipeGesture.direction { case UISwipeGestureRecognizerDirection.right: print("Swiped right") case UISwipeGestureRecognizerDirection.down: print("Swiped down") case UISwipeGestureRecognizerDirection.left: print("Swiped left") case UISwipeGestureRecognizerDirection.up: print("Swiped up") default: break } } } 

मुझे इस तरह योगदान देने की तरह महसूस हुआ, अंत में और अधिक सुरुचिपूर्ण दिखता है:

 func addSwipe() { let directions: [UISwipeGestureRecognizerDirection] = [.Right, .Left, .Up, .Down] for direction in directions { let gesture = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipe:")) gesture.direction = direction self.addGestureRecognizer(gesture) } } func handleSwipe(sender: UISwipeGestureRecognizer) { print(sender.direction) } 

स्टोरीबोर्ड से:

  1. अपने दृश्य में चार स्वाइप जेस्चर पहचानकर्ता जोड़ें
  2. प्रत्येक व्यक्ति को विशेषता निरीक्षक से लक्ष्य की दिशा में सेट करें आप सही, बाएं, ऊपर या नीचे का चयन कर सकते हैं
  3. एक-एक करके, स्वाइप जेस्चर पहचानकर्ता का चयन करें, नियंत्रण + अपने दृश्य नियंत्रक को खींचें नाम डालें (हमें बाएं जेस्चर, राइटजेचर, अप गेश्चर और डाउनजेचर कहते हैं), इस कनेक्शन को निम्न में बदलें: कार्रवाई और टाइप करें: UISwipeGestureRecognizer

अपने दृश्य से नियंत्रक:

 @IBAction func rightGesture(sender: UISwipeGestureRecognizer) { print ("Right") } @IBAction func leftGesture(sender: UISwipeGestureRecognizer) { print ("Left") } @IBAction func upGesture(sender: UISwipeGestureRecognizer) { print = ("Up") } @IBAction func downGesture(sender: UISwipeGestureRecognizer) { print ("Down") } 

ऐसा लगता है कि हाल ही में चीजें बदल गई हैं। XCode 7.2 में निम्नलिखित दृष्टिकोण काम करता है:

 override func viewDidLoad() { super.viewDidLoad() let swipeGesture = UISwipeGestureRecognizer(target: self, action: "handleSwipe:") swipeGesture.direction = [.Down, .Up] self.view.addGestureRecognizer(swipeGesture) } func handleSwipe(sender: UISwipeGestureRecognizer) { print(sender.direction) } 

सिम्युलेटर में आईओएस 8.4 और 9.2 पर और वास्तविक डिवाइस पर 9.2 पर परीक्षण किया गया।

या, यहाँ mlcollard के आसान विस्तार का उपयोग कर:

 let swipeGesture = UISwipeGestureRecognizer() { print("Gesture recognized !") } swipeGesture.direction = [.Down, .Up] self.view.addGestureRecognizer(swipeGesture) 

एप्पल स्विफ्ट संस्करण 3.1 – Xcode संस्करण 8.3 (8 ई 162)

एलेक्जेंडर कासागन के दृष्टिकोण से आसान तरीका

 let directions: [UISwipeGestureRecognizerDirection] = [.up, .down, .right, .left] for direction in directions { let gesture = UISwipeGestureRecognizer(target: self, action: #selector(YourClassName.handleSwipe(gesture:))) gesture.direction = direction self.view?.addGestureRecognizer(gesture) } func handleSwipe(gesture: UISwipeGestureRecognizer) { print(gesture.direction) switch gesture.direction { case UISwipeGestureRecognizerDirection.down: print("down swipe") case UISwipeGestureRecognizerDirection.up: print("up swipe") case UISwipeGestureRecognizerDirection.left: print("left swipe") case UISwipeGestureRecognizerDirection.right: print("right swipe") default: print("other swipe") } } 

UISwipeGestureRecognizer एक direction संपत्ति है जो निम्नलिखित परिभाषा है:

 var direction: UISwipeGestureRecognizerDirection 

इस संकेत संकेतक के लिए कड़ी चोट की अनुमति दी गई दिशा।


स्विफ्ट 3.0.1 (और नीचे) के साथ समस्या यह है कि भले ही UISwipeGestureRecognizerDirection अनुरूप हो, तो निम्न स्निपेट संकलन करेगा लेकिन कोई सकारात्मक OptionSet परिणाम नहीं देगा:

 // This compiles but does not work let gesture = UISwipeGestureRecognizer(target: self, action: #selector(gestureHandler)) gesture.direction = [.right, .left, .up, .down] self.addGestureRecognizer(gesture) 

एक वैकल्पिक हल के रूप में, आपको प्रत्येक इच्छित direction लिए एक UISwipeGestureRecognizer बनाना होगा।


निम्नलिखित खेल का मैदान कोड दिखाता है कि कितने UISwipeGestureRecognizer को एक ही UIView और उसी selector को ऐरे की map विधि का उपयोग करने के लिए कैसे कार्यान्वित किया UISwipeGestureRecognizer :

 import UIKit import PlaygroundSupport class SwipeableView: UIView { convenience init() { self.init(frame: CGRect(x: 100, y: 100, width: 100, height: 100)) backgroundColor = .red [UISwipeGestureRecognizerDirection.right, .left, .up, .down].map({ let gesture = UISwipeGestureRecognizer(target: self, action: #selector(gestureHandler)) gesture.direction = $0 self.addGestureRecognizer(gesture) }) } func gestureHandler(sender: UISwipeGestureRecognizer) { switch sender.direction { case [.left]: frame.origin.x -= 10 case [.right]: frame.origin.x += 10 case [.up]: frame.origin.y -= 10 case [.down]: frame.origin.y += 10 default: break } } } class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white view.addSubview(SwipeableView()) } } let controller = ViewController() PlaygroundPage.current.liveView = controller 

यह केवल एक समारोह को घोषित करके किया जा सकता है जो आपके सभी स्वाइप को संभालता है UISwipeGestureRecognizer दिशा यहाँ मेरा कोड है

  let swipeGestureRight = UISwipeGestureRecognizer(target: self, action:#selector(ViewController.respondToSwipeGesture(_:)) ) swipeGestureRight.direction = UISwipeGestureRecognizerDirection.right self.view .addGestureRecognizer(swipeGestureRight) let swipeGestureLeft = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.respondToSwipeGesture(_:))) swipeGestureLeft.direction = UISwipeGestureRecognizerDirection.left self.view.addGestureRecognizer(swipeGestureLeft) let swipeGestureUp = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.respondToSwipeGesture(_:))) swipeGestureUp.direction = UISwipeGestureRecognizerDirection.up self.view.addGestureRecognizer(swipeGestureUp) let swipeGestureDown = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.respondToSwipeGesture(_:))) swipeGestureDown.direction = UISwipeGestureRecognizerDirection.down self.view.addGestureRecognizer(swipeGestureDown) 

यहां एक समारोह है जो स्वाइपिदिरिंग कार्यक्षमता को सौंप देगा

फ़्लिक जवाब टीओस्वाइपजस्टाइन (_ प्रेषक: UIGestureRecognizer) {

 if let swipeGesture = sender as? UISwipeGestureRecognizer { switch swipeGesture.direction { case UISwipeGestureRecognizerDirection.right: print("right swipe") case UISwipeGestureRecognizerDirection.left: print("leftSwipe") case UISwipeGestureRecognizerDirection.up: print("upSwipe") case UISwipeGestureRecognizerDirection.down: print("downSwipe") default: break } } 

}

नैट के जवाब के लिए बस एक कूलर स्विफ्ट सिंटैक्स:

 [UISwipeGestureRecognizerDirection.right, UISwipeGestureRecognizerDirection.left, UISwipeGestureRecognizerDirection.up, UISwipeGestureRecognizerDirection.down].forEach({ direction in let swipe = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture)) swipe.direction = direction self.view.addGestureRecognizer(swipe) }) 

नीचे दिए गए कोड का पालन करना आसान है और आनंद लें .. 😬

  //SwipeGestureMethodUsing func SwipeGestureMethodUsing () { //AddSwipeGesture [UISwipeGestureRecognizerDirection.right, UISwipeGestureRecognizerDirection.left, UISwipeGestureRecognizerDirection.up, UISwipeGestureRecognizerDirection.down].forEach({ direction in let swipe = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture)) swipe.direction = direction window?.addGestureRecognizer(swipe) }) } //respondToSwipeGesture func respondToSwipeGesture(gesture: UIGestureRecognizer) { if let swipeGesture = gesture as? UISwipeGestureRecognizer { switch swipeGesture.direction { case UISwipeGestureRecognizerDirection.right: print("Swiped right") case UISwipeGestureRecognizerDirection.down: print("Swiped down") case UISwipeGestureRecognizerDirection.left: print("Swiped left") case UISwipeGestureRecognizerDirection.up: print("Swiped up") default: break } } } 

हैप्पी कोडिंग 😊