অঙ্গভঙ্গি সনাক্তকারী
এমন অনেকগুলি ব্যবহার করা স্পর্শ ইভেন্ট (বা অঙ্গভঙ্গি) রয়েছে যা আপনি আপনার দৃষ্টিতে কোনও অঙ্গভঙ্গি সনাক্তকারীকে যুক্ত করার পরে আপনাকে অবহিত করতে পারেন । তারা নিম্নলিখিত অঙ্গভঙ্গির ধরণগুলি ডিফল্টরূপে সমর্থিত:
UITapGestureRecognizer
আলতো চাপুন (এক বা একাধিকবার সংক্ষিপ্তভাবে স্ক্রিনটি স্পর্শ করা)
UILongPressGestureRecognizer
দীর্ঘ স্পর্শ (দীর্ঘ সময়ের জন্য পর্দার স্পর্শ)
UIPanGestureRecognizer
প্যান (আপনার আঙুলটি স্ক্রীন জুড়ে সরানো)
UISwipeGestureRecognizer
সোয়াইপ করুন (দ্রুত আঙুলটি চলন্ত)
UIPinchGestureRecognizer
চিমটি (দুটি আঙুল একসাথে বা পৃথক করা - সাধারণত জুম করার জন্য)
UIRotationGestureRecognizer
ঘোরান (একটি বৃত্তাকার দিকে দুটি আঙুল সরানো)
এগুলি ছাড়াও, আপনি নিজের কাস্টম অঙ্গভঙ্গি সনাক্তকারীও করতে পারেন।
ইন্টারফেস বিল্ডারে একটি অঙ্গভঙ্গি যুক্ত করা
আপনার ভিউয়ের উপরে অবজেক্ট লাইব্রেরি থেকে একটি অঙ্গভঙ্গি সনাক্তকারীকে টেনে আনুন।

আউটলেট এবং অ্যাকশন তৈরির জন্য ডকুমেন্টের আউটলাইনে অঙ্গভঙ্গিটি থেকে আপনার ভিউ কন্ট্রোলার কোডে টানুন Control

এটি ডিফল্টরূপে সেট করা উচিত, তবে এটি নিশ্চিত করুন যে ব্যবহারকারীর অ্যাকশন সক্ষম করা আপনার দৃষ্টিতে সত্য হয়ে আছে।

প্রোগ্রাম হিসাবে ইশারা যুক্ত করা হচ্ছে
প্রোগ্রামটিভভাবে কোনও অঙ্গভঙ্গি যুক্ত করতে, আপনি (1) একটি অঙ্গভঙ্গি সনাক্তকারী তৈরি করুন, (2) এটিকে একটি দৃশ্যে যুক্ত করুন এবং (3) অঙ্গভঙ্গিটি স্বীকৃত হওয়ার পরে ডাকা একটি পদ্ধতি তৈরি করুন।
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// 1. create a gesture recognizer (tap gesture)
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
// 2. add the gesture recognizer to a view
myView.addGestureRecognizer(tapGesture)
}
// 3. this method is called when a tap is recognized
@objc func handleTap(sender: UITapGestureRecognizer) {
print("tap")
}
}
মন্তব্য
sender
পরামিতি ঐচ্ছিক। আপনার যদি অঙ্গভঙ্গির কোনও রেফারেন্সের প্রয়োজন না হয় তবে আপনি এটি ছেড়ে দিতে পারেন। আপনি যদি এটি (sender:)
করেন তবে ক্রিয়া পদ্ধতির নামটির পরে অপসারণ করুন ।
handleTap
পদ্ধতির নামকরণ ছিল নির্বিচারে। আপনি যা ব্যবহার করতে চান তা নাম দিন ।action: #selector(someMethodName(sender:))
আরও উদাহরণ
তারা কীভাবে কাজ করে তা দেখতে আপনি এই ভিশনগুলিতে যুক্ত হওয়া ভঙ্গি শনাক্তকারীদের অধ্যয়ন করতে পারেন।

এই প্রকল্পের কোড এখানে:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tapView: UIView!
@IBOutlet weak var doubleTapView: UIView!
@IBOutlet weak var longPressView: UIView!
@IBOutlet weak var panView: UIView!
@IBOutlet weak var swipeView: UIView!
@IBOutlet weak var pinchView: UIView!
@IBOutlet weak var rotateView: UIView!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Tap
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap))
tapView.addGestureRecognizer(tapGesture)
// Double Tap
let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap))
doubleTapGesture.numberOfTapsRequired = 2
doubleTapView.addGestureRecognizer(doubleTapGesture)
// Long Press
let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(gesture:)))
longPressView.addGestureRecognizer(longPressGesture)
// Pan
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(gesture:)))
panView.addGestureRecognizer(panGesture)
// Swipe (right and left)
let swipeRightGesture = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(gesture:)))
let swipeLeftGesture = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(gesture:)))
swipeRightGesture.direction = UISwipeGestureRecognizerDirection.right
swipeLeftGesture.direction = UISwipeGestureRecognizerDirection.left
swipeView.addGestureRecognizer(swipeRightGesture)
swipeView.addGestureRecognizer(swipeLeftGesture)
// Pinch
let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(handlePinch(gesture:)))
pinchView.addGestureRecognizer(pinchGesture)
// Rotate
let rotateGesture = UIRotationGestureRecognizer(target: self, action: #selector(handleRotate(gesture:)))
rotateView.addGestureRecognizer(rotateGesture)
}
// Tap action
@objc func handleTap() {
label.text = "Tap recognized"
// example task: change background color
if tapView.backgroundColor == UIColor.blue {
tapView.backgroundColor = UIColor.red
} else {
tapView.backgroundColor = UIColor.blue
}
}
// Double tap action
@objc func handleDoubleTap() {
label.text = "Double tap recognized"
// example task: change background color
if doubleTapView.backgroundColor == UIColor.yellow {
doubleTapView.backgroundColor = UIColor.green
} else {
doubleTapView.backgroundColor = UIColor.yellow
}
}
// Long press action
@objc func handleLongPress(gesture: UILongPressGestureRecognizer) {
label.text = "Long press recognized"
// example task: show an alert
if gesture.state == UIGestureRecognizerState.began {
let alert = UIAlertController(title: "Long Press", message: "Can I help you?", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
// Pan action
@objc func handlePan(gesture: UIPanGestureRecognizer) {
label.text = "Pan recognized"
// example task: drag view
let location = gesture.location(in: view) // root view
panView.center = location
}
// Swipe action
@objc func handleSwipe(gesture: UISwipeGestureRecognizer) {
label.text = "Swipe recognized"
// example task: animate view off screen
let originalLocation = swipeView.center
if gesture.direction == UISwipeGestureRecognizerDirection.right {
UIView.animate(withDuration: 0.5, animations: {
self.swipeView.center.x += self.view.bounds.width
}, completion: { (value: Bool) in
self.swipeView.center = originalLocation
})
} else if gesture.direction == UISwipeGestureRecognizerDirection.left {
UIView.animate(withDuration: 0.5, animations: {
self.swipeView.center.x -= self.view.bounds.width
}, completion: { (value: Bool) in
self.swipeView.center = originalLocation
})
}
}
// Pinch action
@objc func handlePinch(gesture: UIPinchGestureRecognizer) {
label.text = "Pinch recognized"
if gesture.state == UIGestureRecognizerState.changed {
let transform = CGAffineTransform(scaleX: gesture.scale, y: gesture.scale)
pinchView.transform = transform
}
}
// Rotate action
@objc func handleRotate(gesture: UIRotationGestureRecognizer) {
label.text = "Rotate recognized"
if gesture.state == UIGestureRecognizerState.changed {
let transform = CGAffineTransform(rotationAngle: gesture.rotation)
rotateView.transform = transform
}
}
}
মন্তব্য
- আপনি একক দৃশ্যে একাধিক অঙ্গভঙ্গি সনাক্তকারীকে যুক্ত করতে পারেন। সরলতার জন্য, যদিও আমি এটি করিনি (সোয়াইপ অঙ্গভঙ্গি বাদে)। আপনার যদি আপনার প্রকল্পের প্রয়োজন হয় তবে আপনার অঙ্গভঙ্গি সনাক্তকারী ডকুমেন্টেশনটি পড়া উচিত । এটি মোটামুটি বোধগম্য এবং সহায়ক।
- উপরে আমার উদাহরণগুলির সাথে জ্ঞাত সমস্যা: (1) প্যান ভিউটি পরবর্তী অঙ্গভঙ্গি ইভেন্টে এর ফ্রেমটিকে পুনরায় সেট করে। (২) সোয়াইপ দর্শনটি প্রথম সোয়াইপে ভুল দিক থেকে আসে। (আমার উদাহরণগুলির মধ্যে এই বাগগুলি কীভাবে অঙ্গভঙ্গি সনাক্তকারীদের কাজ করে তা আপনার বোঝার উপর প্রভাব ফেলবে না))