ইউভিউভিউতে কীভাবে অঙ্গভঙ্গির কলটিকে প্রোগ্রামেমেটিকভাবে স্যুইফ্ট করা যায়


166

আমার একটি ইউআইভিউ রয়েছে এবং আমি এতে আলতো চাপ দিয়েছি:

let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)

আমি এটি টেস্টফাইলে প্রোগ্রামিয়ালি কল করার চেষ্টা করছি।

sendActionForEvent

আমি এই ফাংশনটি ব্যবহার করছি, তবে এটি কাজ করছে না:

myView.sendActionForEvent(UIEvents.touchUpDown)

এটি উদাহরণ হিসাবে প্রেরিত অচেনা নির্বাচক দেখায়।

কিভাবে আমি এই সমস্যার সমাধান করতে পারে?


2
সুইফট ২.২ এ আপনি নতুন সিলেক্টর সিনট্যাক্সটি ব্যবহার করতে পারেন: = UITapGestureRecognizer আলতো চাপুন (লক্ষ্য: স্ব, ক্রিয়া: # নির্বাচক (self.handleTap (_ :)))
Wujo

@ উজো - এর জন্য ধন্যবাদ; আশ্চর্যজনকভাবে এটি আসলে আমার জন্য কাজ করে না, কোনও ইউআইভিউতে সম্ভবত কেবলমাত্র একটি ভিউ কন্ট্রোলারে থাকতে পারে?
ফ্যাটি

2
imageView.userInteractionEnabled = trueআপনি যদি কোনও চিত্রের ভিউ ব্যবহার করেন তবে তাও মনে রাখবেন । অনেকক্ষণ ধরে ধরেছি।
জোশ

@ জোশ, হ্যাঁ একটি গুরুত্বপূর্ণ বিষয়।
নেভারহোপলেস

1
@ খংআজুন সেরা বিকল্পটি হ'ল ট্যাপ ফাংশনটি সরাসরি কল করা
জর্জ

উত্তর:


245

আপনাকে UITapGestureRecognizerলক্ষ্য এবং ক্রিয়া দিয়ে শুরু করতে হবে, যেমন:

let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
myView.addGestureRecognizer(tap)

তারপরে, আপনার হ্যান্ডলারটি প্রয়োগ করা উচিত, যা একবার যখন কোনও ট্যাপ ইভেন্ট ঘটে তখন তাকে ডাকা হবে:

@objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
    // handling code
}

সুতরাং এখন আপনার ট্যাপ অঙ্গভঙ্গি সনাক্তকারী ইভেন্ট হ্যান্ডলারকে কল করা কোনও পদ্ধতিতে কল করার মতোই সহজ:

handleTap()

নির্বাচক ফাংশনটি সরাসরি কল করার পরিবর্তে, আমি প্রোগ্রামটিমেটিকভাবে ইউআইটিএপজেস্টাররনগাইজার ইভেন্টের মাধ্যমে এই কল করতে চাই
জর্জ

2
@muhasturk একটি উত্তরের উত্তরের অর্থ পরিবর্তন করবেন না। আপনার সম্পাদনাটি পুরানো সুইফ্ট সংস্করণগুলির উত্তরটিকে অবৈধ করে দিচ্ছিল। আপনি যদি সুইফট ২.২-এর জন্য কোনও আপডেট পোস্ট করতে চান তবে নিজের উত্তর পোস্ট করুন। ধন্যবাদ.
এরিক আয়া

17
tap.delegate = selfপ্রয়োজন নেই, যেহেতু আপনি ইতিমধ্যে একটি লক্ষ্য এবং অ্যাকশন নির্ধারণ করেছেন
ড্যানিয়েল

4
সুইফট 3-তে একটি ত্রুটি ছুঁড়েছে, আপনার হ্যান্ডেল ট্যাপের ফাংশনটি হ'ল: ফানক হ্যান্ডেলট্যাপ (_ প্রেরক: ইউআইটিএপজেস্টাররেকগনিজার)
ট্র্যাভিস এম।

কলিং ফাংশনটি ................ ফানক হ্যান্ডেলট্যাপ হওয়া উচিত (_ প্রেরক: UITapGestureRecognizer? = শূন্য) ............... আপনি মিস করেছেন "_ "........ সুতরাং আপনার কলিং ফাংশনটি কাজ করছিল না ..
প্রসাদ পাতিল

94

যে কেউ সুইফ্ট 3 সমাধান সন্ধান করছে For

let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))

view.addGestureRecognizer(tap)

view.isUserInteractionEnabled = true

self.view.addSubview(view)

// function which is triggered when handleTap is called
 func handleTap(_ sender: UITapGestureRecognizer) {
     print("Hello World")
  }

1
isUserInteractionEnabledআসলেই কি দরকার? ডিফল্ট মিথ্যা?
jose920405

6
view.isUserInteractionEnabled = trueযখন আপনার ভিউটি ইউজিকন্ট্রোলের পরিবর্তে ইমেজভিউ বা ইউআইআইভিউর কোনও উপক্লাস হয় তখন কী হয়।
পঙ্কজ কুলকারনী

61

জন্য সুইফট 4 :

let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))

view.addGestureRecognizer(tap)

view.isUserInteractionEnabled = true

self.view.addSubview(view)

// function which is triggered when handleTap is called
@objc func handleTap(_ sender: UITapGestureRecognizer) {
    print("Hello World")
}

সুইফ্ট 4-এ আপনাকে স্পষ্টভাবে ইঙ্গিত করতে হবে যে ট্রিগারযুক্ত ফাংশনটি উদ্দেশ্য-সি থেকে কলযোগ্য, সুতরাং আপনার @ হ্যান্ডেলট্যাপ ফাংশনটিও আপনাকে @objc যুক্ত করতে হবে।

এখানে অলি বিডলের উত্তর দেখুন: সুইফট 4 টি অঙ্গভঙ্গি যুক্ত করুন: ওব্রাইড বনাম @ ওবজেসি


view.isUserInteractionEnabled = trueযখন আপনার ভিউটি ইউজিকন্ট্রোলের পরিবর্তে ইমেজভিউ বা ইউআইআইভিউর কোনও উপক্লাস হয় তখন কী হয়।
পঙ্কজ কুলকারনী

50

কেবল একটি নোট - দৃশ্যে সক্ষম ইন্টারঅ্যাকশনটি ভুলবেন না:

let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))

view.addGestureRecognizer(tap)

// view.userInteractionEnabled = true

self.view.addSubview(view)

1
নোটটি গুরুত্বপূর্ণ!
ইতাই স্পেক্টর

21

ধাপ 1

@IBOutlet var viewTap: UIView!

ধাপ ২

var tapGesture = UITapGestureRecognizer()

ধাপ 3

override func viewDidLoad() {
    super.viewDidLoad()
    // TAP Gesture
    tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.myviewTapped(_:)))
    tapGesture.numberOfTapsRequired = 1
    tapGesture.numberOfTouchesRequired = 1
    viewTap.addGestureRecognizer(tapGesture)
    viewTap.isUserInteractionEnabled = true
}

পদক্ষেপ: 4

func myviewTapped(_ sender: UITapGestureRecognizer) {

    if self.viewTap.backgroundColor == UIColor.yellow {
        self.viewTap.backgroundColor = UIColor.green
    }else{
        self.viewTap.backgroundColor = UIColor.yellow
    }
}

আউটপুট

এখানে চিত্র বর্ণনা লিখুন


14

ট্যাপ ইশারা বাস্তবায়ন করা হচ্ছে

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "touchHappen") 
view.userInteractionEnabled = true
view.addGestureRecognizer(tap)

যখন ট্যাপটি স্বীকৃত হবে তখন এই ফাংশনটি কল করে।

func touchHappen() {
    //Causes the view (or one of its embedded text fields) to resign the first responder status.
    self.view.endEditing(true)
}

সুইফট 3 এর জন্য আপডেট

let tap = UITapGestureRecognizer(target: self, action: #selector(self.touchHappen(_:)))
view.addGestureRecognizer(tap)
view.userInteractionEnabled = true

func touchHappen(_ sender: UITapGestureRecognizer) {
    print("Hello Museer")
}

11

সুইফট 4

let tap = UITapGestureRecognizer(target: self, action: #selector(self.touchTapped(_:)))
    self.view.addGestureRecognizer(tap)

@objc func touchTapped(_ sender: UITapGestureRecognizer) {
}

8

এটি এটি সুইফ্ট 3-তে কীভাবে কাজ করে:

@IBOutlet var myView: UIView!
override func viewDidLoad() {
    super.viewDidLoad()

    let tap = UITapGestureRecognizer(target: self, action:#selector(handleTap))

    myView.addGestureRecognizer(tap)
}

func handleTap() {
    print("tapped")
}

7

সুইফট 4-এর সম্পূর্ণ উত্তর

পদক্ষেপ 1: দেখার জন্য একটি আউটলেট তৈরি করুন

@IBOutlet weak var rightViewOutlet: UIView!

পদক্ষেপ 2: একটি কলের অঙ্গভঙ্গি সংজ্ঞায়িত করুন

var tapGesture = UITapGestureRecognizer()

পদক্ষেপ 3: ওবিজেসি ফাংশন তৈরি করুন (যখন দেখবেন তখন কল করুন)

@objc func rightViewTapped(_ recognizer: UIGestureRecognizer) {
    print("Right button is tapped")
}

পদক্ষেপ 4: ভিউডিডলডের মধ্যে নিম্নলিখিতগুলি যুক্ত করুন ()

let rightTap = UITapGestureRecognizer(target: self, action: #selector(ViewController.rightViewTapped(_:)))
    rightViewOutlet.addGestureRecognizer(rightTap)

দ্বিতীয় পদক্ষেপের প্রয়োজন নেই।
গাইডো

7

তিনটি দেখার জন্য সুইফ্ট 5.1 উদাহরণ

পদক্ষেপ: 1 -> স্টোরিবোর্ড দেখুন যোগ করুন এবং আউটলেট ভিউ নিয়ন্ত্রণকারী ইউআইভিউ যোগ করুন

@IBOutlet var firstView: UIView!
@IBOutlet var secondView: UIView!
@IBOutlet var thirdView: UIView!

পদক্ষেপ: 2 -> স্টোরিবোর্ড ভিউ ট্যাগ যুক্ত করুন

firstView secondView thirdView

পদক্ষেপ: 3 -> অঙ্গভঙ্গি যুক্ত করুন

override func viewDidLoad() {
        super.viewDidLoad()

        firstView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tap(_:))))
        firstView.isUserInteractionEnabled = true
        secondView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tap(_:))))
        secondView.isUserInteractionEnabled = true
        thirdView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tap(_:))))
        thirdView.isUserInteractionEnabled = true
    }

পদক্ষেপ: 4 -> দেখুন নির্বাচন করুন

@objc func tap(_ gestureRecognizer: UITapGestureRecognizer) {
        let tag = gestureRecognizer.view?.tag
        switch tag! {
        case 1 :
            print("select first view")
        case 2 :
            print("select second view")
        case 3 :
            print("select third view")
        default:
            print("default")
        }
    }

6

আমি সুইফটে এক্সকোড 6.4 এ কাজ করেছি worked নিচে দেখ.

var view1: UIView!

func assignTapToView1() {          
  let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap"))
  //  tap.delegate = self
  view1.addGestureRecognizer(tap)
  self.view .addSubview(view1)

...
}

func handleTap() {
 print("tap working")
 view1.removeFromSuperview()
 // view1.alpha = 0.1
}

5

যদি আপনি চান তবে অবজেক্টিভ সি কোডটি নীচে দেওয়া হয়েছে,

UITapGestureRecognizer *gesRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; // Declare the Gesture.
gesRecognizer.delegate = self;
[yourView addGestureRecognizer:gesRecognizer]; // Add Gesture to your view.

// Declare the Gesture Recognizer handler method.

- (void)handleTap:(UITapGestureRecognizer *)gestureRecognizer{
   NSLog(@"Tapped");
}

অথবা আপনি চান সুইফট কোডটি নীচে দেওয়া হয়েছে,

import UIKit
class ViewController: UIViewController {

    @IBOutlet weak var myView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Add tap gesture recognizer to view
        let tapGesture = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
        myView.addGestureRecognizer(tapGesture)
    }

    // this method is called when a tap is recognized
    func handleTap(sender: UITapGestureRecognizer) {

        print("tap")
    }
}

5

আপনাকে লক্ষ্য এবং ক্রিয়া দিয়ে ইউআইটিএপপেশারআরগনাইজারকে আরম্ভ করতে হবে, যেমন:

let tap = UITapGestureRecognizer(target: self, action: "handleTap:")
tap.delegate = self
myView.addGestureRecognizer(tap)

তারপরে, আপনার হ্যান্ডলারটি প্রয়োগ করা উচিত, যা একবার যখন কোনও ট্যাপ ইভেন্ট ঘটে তখন তাকে ডাকা হবে:

func handleTap(sender: UITapGestureRecognizer) {
  // handling code
}

3
    let tap = UITapGestureRecognizer(target: self, action: Selector("handleFrontTap:"))
    frontView.addGestureRecognizer(tap)

// Make sure this is not private
func handleFrontTap(gestureRecognizer: UITapGestureRecognizer) {
    print("tap working")
}

3

সুইফট 4

প্রথমে UITapGestureRecognizer এর একটি অবজেক্ট তৈরি করুন

var tapGesture = UITapGestureRecognizer()

দ্বিতীয় পদক্ষেপটি ইউআইটিএপপেশারআরকোনাইজারটি শুরু করা। ব্যবহারকারীর ইন্টারঅ্যাকশন সক্ষম করুন, তারপরে এটি যুক্ত করুন।

override func viewDidLoad() {
        super.viewDidLoad()
    tapGesture = UITapGestureRecognizer(target: self, action: #selector(YourViewController.myviewTapped(_:)))
            infosView.isUserInteractionEnabled = true
            infosView.addGestureRecognizer(tapGesture)
view.addSubview(infosView)
}

তৃতীয়ত, একটি পদ্ধতি তৈরি করুন

@objc func myviewTapped(_ recognizer: UIGestureRecognizer) {
                print("button is tapped")
            }

3

নিম্নলিখিত এক্সটেনশন চেষ্টা করুন

    extension UIView {

    func  addTapGesture(action : @escaping ()->Void ){
        let tap = MyTapGestureRecognizer(target: self , action: #selector(self.handleTap(_:)))
        tap.action = action
        tap.numberOfTapsRequired = 1

        self.addGestureRecognizer(tap)
        self.isUserInteractionEnabled = true

    }
    @objc func handleTap(_ sender: MyTapGestureRecognizer) {
        sender.action!()
    }
}

class MyTapGestureRecognizer: UITapGestureRecognizer {
    var action : (()->Void)? = nil
}

এবং তারপরে এটি ব্যবহার করুন:

submitBtn.addTapGesture {
     //your code
}

এমনকি আপনি এটি সেলের জন্যও ব্যবহার করতে পারেন

cell.addTapGesture {
     //your code
}

1
যদিও কেবল একটি কোড-উত্তর উত্তর একটি উত্তর, কিছুটা ব্যাখ্যা (কেন ওপি কোডটি কার্যকর হয়নি, আপনার কোডের পিছনে সাধারণ ধারণা কী, গুরুত্বপূর্ণ বিষয়গুলি, সতর্কতা, ...) এটি আরও ভাল উত্তর দিতে পারে।
lfurini 16'19

2

আমি সুইফট ২.২-তে এক্সকোড 7.3.1 এ কাজ করেছি। নিচে দেখ.

func addTapGesture() {
    let tap = UITapGestureRecognizer(target: self, action: #selector(MyViewController.handleTap))
    tap.numberOfTapsRequired = 1
    self.myView.addGestureRecognizer(tap)
}

func handleTap() {
    // Your code here...
}

1
যোগ addTapGesture()আপনারviewDidLoad()
Daya কেভিন

1

আমি দুটি পয়েন্ট নির্দিষ্ট করতে চেয়েছিলাম যা আমার সমস্যার কারণ হতে পারে।

  • আমি আর ইশতে ইঙ্গিত সনাক্তকারী তৈরি করছিলাম এবং এটিকে একটি লেট সম্পত্তিতে রেখেছিলাম। স্পষ্টতই, ভিউটিতে এই অঙ্গভঙ্গিটি পুনরায় যুক্ত করা কার্যকর হয় না। ইশ চলাকালীন অঙ্গভঙ্গি সনাক্তকারীকে স্ব স্ব বস্তু হতে পারে, সঠিকভাবে কনফিগার করা হয়নি।
  • অঙ্গভঙ্গি শনাক্তকারীকে শূন্য ফ্রেমের সাথে দেখাতে যুক্ত করা উচিত নয়। আমি আমার সমস্ত দর্শন শূন্য ফ্রেমের সাহায্যে তৈরি করি এবং তারপরে অটোলেআউট ব্যবহার করে সেগুলি পুনরায় আকার দিয়ে থাকি। অটোলেআউট ইঞ্জিনের দ্বারা মতামতগুলি পুনরায় আকার দেওয়ার পরে অঙ্গভঙ্গি সনাক্তকারীদের যুক্ত করতে হবে। সুতরাং আমি ভিউডিড অ্যাপায় অঙ্গভঙ্গি সনাক্তকারী যুক্ত করব এবং তারা কাজ করে।

1

xCode 9.3, সুইফট 4.0

class BaseVC: UIViewController, UIGestureRecognizerDelegate { 

      @IBOutlet weak var iView: UIView!

      override func viewDidLoad() {
          super.viewDidLoad()
          let clickUITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.onSelect(_:)))
          clickUITapGestureRecognizer.delegate = self
          iView?.addGestureRecognizer(tap)
      }

      func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
          return true
      }


     @IBAction func onSelect(_ sender: Any) {

     }
}

ইলেয়া
ক্রিট

? iView .addGestureRecognizer (টোকা) আপনার gestureRecognizer নাম clickUITapGestureRecognizer তাই হয় সঠিক উপায়: iView .addGestureRecognizer (clickUITapGestureRecognizer)?
Illya Krit

1

ভিউডিডলডের অভ্যন্তরে

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:)))
    self.imgMainAdView.isUserInteractionEnabled = true
    self.imgMainAdView.addGestureRecognizer(tapGestureRecognizer)

//MARK: - Image Tap Method -
@objc func imageTapped(tapGestureRecognizer: UITapGestureRecognizer)
{
    print("Tapped")
    if let url = URL(string: self.strMAinAdvLink)
    {
        UIApplication.shared.open(url, options: [:])
    }
}

কলিং উদ্দেশ্য

@IBAction func btnCall1Action(_ sender: Any)
{
    let text = self.strPhoneNumber1!
    let test = String(text.filter { !" -()".contains($0) })
    UIApplication.shared.openURL(NSURL(string: "tel://\(test)")! as URL)
}

মেল উদ্দেশ্য

MFMailComposeViewControllerDelegate

 @IBAction func btnMailAction(_ sender: Any)
{
    let strEmail = SAFESTRING(str:  (self.dictEventDetails?.value(forKeyPath: "Email.value_text.email") as! String))

    if !MFMailComposeViewController.canSendMail()
    {
        AppDelegate.sharedInstance().showAlertAction(strTitle: "OK", strMessage: "Mail services are not available") { (success) in
        }
        return
    }
    let composeVC = MFMailComposeViewController()
    composeVC.mailComposeDelegate = self
    composeVC.setToRecipients([strEmail])
    composeVC.setSubject("")
    composeVC.setMessageBody("", isHTML: false)
    self.present(composeVC, animated: true, completion: nil)
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?)
{
    controller.dismiss(animated: true, completion: nil)
}

1

সুইফট 5- এ ভিউতে অঙ্গভঙ্গি যুক্ত করার সহজ উপায় এখানে

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        addGestures()
    }

    // MARK: Add Gestures to target view
    func addGestures()
    {
        // 1. Single Tap or Touch
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapGetstureDetected))
        tapGesture.numberOfTapsRequired = 1
        view.addGestureRecognizer(tapGesture)

        //2. Double Tap
        let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(self.doubleTapGestureDetected))
        doubleTapGesture.numberOfTapsRequired = 2
        view.addGestureRecognizer(doubleTapGesture)

        //3. Swipe
        let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.swipeGetstureDetected))
        view.addGestureRecognizer(swipeGesture)

        //4. Pinch
        let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(self.pinchGetstureDetected))
        view.addGestureRecognizer(pinchGesture)

        //5. Long Press
        let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.longPressGetstureDetected))
        view.addGestureRecognizer(longPressGesture)

        //6. Pan
        let panGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.panGestureDetected))
        view.addGestureRecognizer(panGesture)

    }

    // MARK: Handle Gesture detection
    @objc func swipeGetstureDetected() {
        print("Swipe Gesture detected!!")
    }

    @objc func tapGetstureDetected() {
        print("Touch/Tap Gesture detected!!")
    }

    @objc func pinchGetstureDetected() {
        print("Pinch Gesture detected!!")
    }

    @objc func longPressGetstureDetected() {
        print("Long Press Gesture detected!!")
    }

    @objc func doubleTapGestureDetected() {
        print("Double Tap Gesture detected!!")
    }

    @objc func panGestureDetected()
    {
        print("Pan Gesture detected!!")
    }


    //MARK: Shake Gesture
    override func becomeFirstResponder() -> Bool {
        return true
    }
    override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?){
        if motion == .motionShake
        {
            print("Shake Gesture Detected")
        }
    }
}

0

নিম্নলিখিত সুইফট কোডটি ব্যবহার করুন (এক্সকোড 6.3.1 এ পরীক্ষিত):

    import UIKit

    class KEUITapGesture150427 : UIViewController {
      var _myTap: UITapGestureRecognizer?
      var _myView: UIView?

      override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.whiteColor();

        _myTap = UITapGestureRecognizer(target: self
, action: Selector("_myHandleTap:"))
        _myTap!.numberOfTapsRequired = 1

        _myView = UIView(frame: CGRectMake(100, 200, 100, 100))
        _myView!.backgroundColor=UIColor.blueColor()
        _myView!.layer.cornerRadius = 20
        _myView!.layer.borderWidth = 1
        _myView!.addGestureRecognizer(_myTap!)
        view.addSubview(_myView!)
      }

      func _myHandleTap(sender: UITapGestureRecognizer) {
        if sender.state == .Ended {
          println("_myHandleTap(sender.state == .Ended)")
          sender.view!.backgroundColor
          = UIColor(red: CGFloat(drand48()), green: CGFloat(drand48()), blue: CGFloat(drand48()), alpha: 1.0);
        }
      }
    }

নোট করুন যে আপনার টার্গেটটি ইউআইআরআইএসপেন্ডারের যে কোনও সাবক্লাস হতে পারে, দেখুন (এক্সকোড .3.৩.১ এ পরীক্ষিত):

    import UIKit

    class MyTapTarget  : UIResponder {
      func _myHandleTap2(sender: UITapGestureRecognizer) {
        if sender.state == .Ended {
          println("_myHandleTap2(sender.state == .Ended)")
          sender.view!.backgroundColor
            = UIColor(red: CGFloat(drand48()), green: CGFloat(drand48()), blue: CGFloat(drand48()), alpha: 1.0);
        }
      }
    }

    class KEUITapGesture150427b : UIViewController {
      var _myTap: UITapGestureRecognizer?
      var _myView: UIView?
      var _myTapTarget: MyTapTarget?

      override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.whiteColor();

        _myTapTarget = MyTapTarget()
        _myTap = UITapGestureRecognizer(target: _myTapTarget!
, action: Selector("_myHandleTap2:"))
        _myTap!.numberOfTapsRequired = 1

        _myView = UIView(frame: CGRectMake(100, 200, 100, 100))
        _myView!.backgroundColor=UIColor.blueColor()
        _myView!.layer.cornerRadius = 20
        _myView!.layer.borderWidth = 1
        _myView!.addGestureRecognizer(_myTap!)
        view.addSubview(_myView!)
      }
    }

0

আমারভিউয়ের ইউআইটিপপেশারআর সনাক্তকারীকে অনুরোধ করার পরিবর্তে আপনি সরাসরি ফাংশনটিতে কল করতে পারেন handleTap,

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.