সুইফ্ট 5 এবং আইওএস 12 এর UIGestureRecognizerDelegate
সাথে একটি পদ্ধতি বলা হয় gestureRecognizer(_:shouldReceive:)
। gestureRecognizer(_:shouldReceive:)
নিম্নলিখিত ঘোষণা আছে:
কোনও অঙ্গভঙ্গি শনাক্তকারী কোনও স্পর্শ উপস্থাপন করে এমন কোনও সামগ্রী গ্রহণ করা উচিত কিনা তা প্রতিনিধিটিকে জিজ্ঞাসা করুন।
optional func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool
নীচের সম্পূর্ণ কোডটি এর সম্ভাব্য বাস্তবায়ন দেখায় gestureRecognizer(_:shouldReceive:)
। এই কোড ViewController
সহ, এর দর্শন (সহ imageView
) একটি সংক্ষিপ্তসার একটি ট্যাপ printHello(_:)
পদ্ধতিটি ট্রিগার করবে না ।
import UIKit
class ViewController: UIViewController, UIGestureRecognizerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(printHello))
tapGestureRecognizer.delegate = self
view.addGestureRecognizer(tapGestureRecognizer)
let imageView = UIImageView(image: UIImage(named: "icon")!)
imageView.frame = CGRect(x: 50, y: 50, width: 100, height: 100)
view.addSubview(imageView)
imageView.isUserInteractionEnabled = true
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if let touchedView = touch.view, let gestureView = gestureRecognizer.view, touchedView.isDescendant(of: gestureView), touchedView !== gestureView {
return false
}
return true
}
@objc func printHello(_ sender: UITapGestureRecognizer) {
print("Hello")
}
}
এর বিকল্প বাস্তবায়ন gestureRecognizer(_:shouldReceive:)
হতে পারে:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
return gestureRecognizer.view === touch.view
}
উল্লেখ্য তবে যে যদি এই বিকল্প কোডটি চেক না touch.view
একটি subview হয় gestureRecognizer.view
।