কীভাবে কোনও ইউআইভিউতে কোনও স্পর্শ ইভেন্ট যুক্ত করবেন?


280

আমি কীভাবে কোনও ইউআইভিউতে একটি স্পর্শ ইভেন্ট যুক্ত করব?
আমি চেষ্টা করি:

UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, nextY)] autorelease];
[headerView addTarget:self action:@selector(myEvent:) forControlEvents:UIControlEventTouchDown];
// ERROR MESSAGE: UIView may not respond to '-addTarget:action:forControlEvents:'

আমি একটি সাবক্লাস তৈরি করতে এবং ওভাররাইট করতে চাই না

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

: দ্রুতগতি জন্য আপনি এখান থেকে এটি পেতে পারেন stackoverflow.com/questions/28675209/...
Mr.Javed Multani

উত্তর:


578

আইওএস ৩.২ এবং উচ্চতর ক্ষেত্রে, আপনি অঙ্গভঙ্গি সনাক্তকারী ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি কীভাবে কোনও ট্যাপ ইভেন্টটি পরিচালনা করবেন:

//The setup code (in viewDidLoad in your view controller)
UITapGestureRecognizer *singleFingerTap = 
  [[UITapGestureRecognizer alloc] initWithTarget:self 
                                          action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleFingerTap];

//The event handling method
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer
{
  CGPoint location = [recognizer locationInView:[recognizer.view superview]];

  //Do stuff here...
}

পাশাপাশি অঙ্গভঙ্গিতেও নির্মিত গুচ্ছ রয়েছে। আইওএস ইভেন্ট হ্যান্ডলিংয়ের জন্য ডক্স এবং দেখুন UIGestureRecognizer। আমার কাছে গিথুবে নমুনা কোডও রয়েছে যা সাহায্য করতে পারে।


তবে সেটি হল ভিউর টাচ ডিফল্ট ক্রিয়াকে ওভাররাইট করে। The ভিউটির ডিফল্ট টাচ অ্যাকশনটিকে কল করা কি সম্ভব? [সুপার টাচবেগান] এর মতো কিছু? ...
এম পেনেডস

2
সিজিপিয়েন্ট লাইন কী করে?
জাকদানস

2
@ আপনার বন্ধুরাজক CGPointআলতো চাপানো দৃশ্যের তদারকিতে ট্যাপের অবস্থানটি উপস্থাপন করে। আপনি এই বিন্দুটি ট্যাপড দৃশ্যে (বা কোনও ভাইবোন দৃষ্টিভঙ্গি) সজ্জিত স্থানে সরিয়ে নিতে ব্যবহার করতে পারেন। UIPanGestureRecognizerস্ক্রিনের চারপাশের ভিউটি টেনে আনার জন্য হ্যান্ডলারের এটি আরও কার্যকর ।
নাথন এরর

5
মহান সংক্ষিপ্ত উত্তর, ধন্যবাদ। তবে শীশ, এটি যদি খুব সহজেই খুব সহজ হত তবে কি ভাল লাগবে না ?! :)
নাটব্রো

এটি খুব খারাপ নয়, তবে আমি ইচ্ছা করি যে github.com/neror/ftutils/blob/master/Heeda/FTUtils/… এর মতো ব্লক ভিত্তিক এপিআই থাকত । এক্সকোড 4 এর ইন্টারফেস বিল্ডারে জেসচার সনাক্তকারীকে যুক্ত / কনফিগার করার জন্য সমর্থনও রয়েছে।
নাথন এরর

126

অঙ্গভঙ্গি সনাক্তকারী

এমন অনেকগুলি ব্যবহার করা স্পর্শ ইভেন্ট (বা অঙ্গভঙ্গি) রয়েছে যা আপনি আপনার দৃষ্টিতে কোনও অঙ্গভঙ্গি সনাক্তকারীকে যুক্ত করার পরে আপনাকে অবহিত করতে পারেন । তারা নিম্নলিখিত অঙ্গভঙ্গির ধরণগুলি ডিফল্টরূপে সমর্থিত:

  • 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) প্যান ভিউটি পরবর্তী অঙ্গভঙ্গি ইভেন্টে এর ফ্রেমটিকে পুনরায় সেট করে। (২) সোয়াইপ দর্শনটি প্রথম সোয়াইপে ভুল দিক থেকে আসে। (আমার উদাহরণগুলির মধ্যে এই বাগগুলি কীভাবে অঙ্গভঙ্গি সনাক্তকারীদের কাজ করে তা আপনার বোঝার উপর প্রভাব ফেলবে না))

2
আপনার উত্তরটি সত্যই সুন্দর এবং বিস্তারিত বর্ণনার সাথে সহায়ক। আমি কেন ভোট দিচ্ছি তাও উত্তর দিন। তবে আপনি কেবল একটি নির্দেশ মিস করেছেন যা আমি মনে করি যে আপনি অবশ্যই নিজের উত্তরে অন্তর্ভুক্ত করবেন কারণ আপনি এটি পুরো বিশদভাবে ব্যাখ্যা করেছেন। সেই নির্দেশটি "<yourView> .EEableUserInteration = TRUE" সেট করার বিষয়ে। আমি আশা করি আপনি আমার সাথে একমত।
এর। বিহার

3
অর্ডার এই কাজ করা জন্য UIView: আপনি যোগ করতে হবেself.isUserInteractionEnabled = true;
neiker

52

আমি মনে করি আপনি সহজভাবে ব্যবহার করতে পারেন

UIControl *headerView = ...
[headerView addTarget:self action:@selector(myEvent:) forControlEvents:UIControlEventTouchDown];

মানে হেডারভিউ ইউআইসিএনট্রোল থেকে প্রসারিত।


7
এটি আরও ভাল উত্তর। UITapGestureRecognizerএর প্রতিস্থাপন নয় UIControlEventTouchDown। একটি Tapসাধারণত রচনা UIControlEventTouchDownএবং UIControlEventTouchUpInside
ওহহো

62
UIViewএকটি নয় UIControlএবং এভাবে অ্যাক্সেস নেই addTarget:action:forControlEvents:
রবার্ট জোসেফ

9
এছাড়াও মনে রাখবেন যে ইউআইভিউ থেকে কোনও ইউআইসিএন্ট্রোল উত্তরাধিকার সূত্রে প্রাপ্ত। আমার উদ্দেশ্যে আমাকে যা করতে হয়েছিল তা হ'ল সাবক্লাস ধরণের একটি সাধারণ স্যুইচ।
pretzels1337

1
আপনি এর ক্লাসটি ইউআইসিএন্ট্রোল @ রবার্টজোসেফ এ সেট করতে পারেন .. xib ফাইল এ যান এবং কাস্টম ক্লাসটি ইউআইসিএন্ট্রলে সেট করুন। এখন আপনি এটিতে ইভেন্টটি পরিচালনা করতে পারেন ..
জার ই আহমর

2
সুতরাং কেন এটি আরও ভাল সমাধান যেহেতু আমি উত্তরাধিকার পরিবর্তন করছি কেবল কলগুলি পরিচালনা করতে?
অ্যান্টনি গ্লিয়াডচেনকো

21

সুইফট 3 এবং সুইফট 4

import UIKit

extension UIView {
  func addTapGesture(tapNumber: Int, target: Any, action: Selector) {
    let tap = UITapGestureRecognizer(target: target, action: action)
    tap.numberOfTapsRequired = tapNumber
    addGestureRecognizer(tap)
    isUserInteractionEnabled = true
  }
}

ব্যবহার

yourView.addTapGesture(tapNumber: 1, target: self, action: #selector(yourMethod))

ধন্যবাদ। দুর্দান্ত কাজ!
মিক্রস্যা

1
এটা খুবই পছন্দ করি! প্রকল্পের
সবগুলিতে যুক্ত করা

17

গৃহীত উত্তরের ভিত্তিতে আপনি একটি ম্যাক্রো সংজ্ঞায়িত করতে পারেন:

#define handle_tap(view, delegate, selector) do {\
    view.userInteractionEnabled = YES;\
    [view addGestureRecognizer: [[UITapGestureRecognizer alloc] initWithTarget:delegate action:selector]];\
} while(0)

এই ম্যাক্রোটি আরসি ব্যবহার করে, তাই কোনও releaseকল নেই।

ম্যাক্রো ব্যবহারের উদাহরণ:

handle_tap(userpic, self, @selector(onTapUserpic:));

4
আপনি যদি স্টোরিবোর্ডে ভিউটি তৈরি করেন তবে "ব্যবহারকারী ইন্টারঅ্যাকশন সক্ষম" বিকল্পটি সক্ষম করতে ভুলবেন না।
ডেভিড

যেখানে আমাদের। ঘন্টা বা। মি তে ম্যাক্রো সংজ্ঞা দেওয়া উচিত এবং পরামিতিগুলির নামটি কী হওয়া উচিত। মানে # ডিফাইন হ্যান্ডেল_ট্যাপ (ইউআইভিউ ভিউ, প্রতিনিধি প্রতিনিধি, এসইএল নির্বাচক) করবেন ..
জার ই আহমর

8

আপনি আপনার কোডে অঙ্গভঙ্গি সনাক্তকারী যুক্ত করে এটি অর্জন করতে পারেন।

পদক্ষেপ 1: ViewController.m:

// Declare the Gesture.
UITapGestureRecognizer *gesRecognizer = [[UITapGestureRecognizer alloc] 
                                          initWithTarget:self 
                                          action:@selector(handleTap:)];
gesRecognizer.delegate = self;

// Add Gesture to your view.
[yourView addGestureRecognizer:gesRecognizer]; 

পদক্ষেপ 2: ViewController.m:

// Declare the Gesture Recogniser handler method.
- (void)handleTap:(UITapGestureRecognizer *)gestureRecognizer{
   NSLog(@"Tapped");
}

দ্রষ্টব্য: এখানে আমার ক্ষেত্রে আপনার ভিউ ছিল @property (strong, nonatomic) IBOutlet UIView *localView;

সম্পাদনা: * লোকালভিউ নীচে থেকে মেইন.স্টোরবোর্ডের সাদা বাক্স

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

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


আমি একাধিক ভিউ করছি তাই আমি কি প্রেরক আইডি পারি ??
শিরাজি

আপনাকে অভ্যন্তরীণ সাবউভিউতে যেতে হবে, তারপরে আপনি প্রেরককে পাস করতে পারেন -------- [ইউআইবাটন ক্লাস]]) {// নির্দিষ্ট ভিউতে যান // এখানে আপনি সেই বিন্দুতে পৌঁছে গেছেন। }}
আনু

8

ইন সুইফট 4.2 এবং Xcode 10

ব্যবহারের UITapGestureRecognizer স্পর্শ ইভেন্টের যোগ করার জন্য

//Add tap gesture to your view
let tap = UITapGestureRecognizer(target: self, action: #selector(handleGesture))
yourView.addGestureRecognizer(tap)

// GestureRecognizer
@objc func handleGesture(gesture: UITapGestureRecognizer) -> Void {
//Write your code here
}

আপনি যদি SharedClass ব্যবহার করতে চান

//This is my shared class
import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    //Tap gesture function
    func addTapGesture(view: UIView, target: Any, action: Selector) {
        let tap = UITapGestureRecognizer(target: target, action: action)
        view.addGestureRecognizer(tap)
    }
} 

আমার ভিউকন্ট্রোলারে ভিউ 1, ভিউ 2 এবং ভিউ 3 নামে 3 টি মতামত রয়েছে।

override func viewDidLoad() {
    super.viewDidLoad()
    //Add gestures to your views
    SharedClass.sharedInstance.addTapGesture(view: view1, target: self, action: #selector(handleGesture))
    SharedClass.sharedInstance.addTapGesture(view: view2, target: self, action: #selector(handleGesture))
    SharedClass.sharedInstance.addTapGesture(view: view3, target: self, action: #selector(handleGesture2))

}

// GestureRecognizer
@objc func handleGesture(gesture: UITapGestureRecognizer) -> Void {
    print("printed 1&2...")
}
// GestureRecognizer
@objc func handleGesture2(gesture: UITapGestureRecognizer) -> Void {
    print("printed3...")
}

6

Heres একটি সুইফ্ট সংস্করণ:

// MARK: Gesture Extensions
extension UIView {

    func addTapGesture(#tapNumber: Int, target: AnyObject, action: Selector) {
        let tap = UITapGestureRecognizer (target: target, action: action)
        tap.numberOfTapsRequired = tapNumber
        addGestureRecognizer(tap)
        userInteractionEnabled = true
    }

    func addTapGesture(#tapNumber: Int, action: ((UITapGestureRecognizer)->())?) {
        let tap = BlockTap (tapCount: tapNumber, fingerCount: 1, action: action)
        addGestureRecognizer(tap)
        userInteractionEnabled = true
    }
}


1
ওহ মানুষ, সেই অংশটি ভুলে গেছি। এটি একটি কাস্টম ফাংশন। এখানে: github.com/goktugyil/EZSwiftExtensions/blob/master/Source/…
এসকরোথ

5

সুইফট 3:

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

func handleTapGestureRecognizer(_ gestureRecognizer: UITapGestureRecognizer) {

}

1

আজকাল বেশ সহজ মনে হচ্ছে। এটি সুইফ্ট সংস্করণ।

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

@objc func viewTapped(recognizer: UIGestureRecognizer)
{
    //Do what you need to do!
}

0

এখানে আইওএস টেপস্টেচার; নীচে প্রদর্শিত হিসাবে ক্রিয়াকলাপে নীচের কোডটি লেখার পরে প্রথমে আপনার অঙ্গভঙ্গি সনাক্তকারীটির জন্য ক্রিয়া তৈরি করতে হবে

- (IBAction)tapgesture:(id)sender

{


[_password resignFirstResponder];


[_username resignFirstResponder];

NSLog(@" TapGestureRecognizer  tapped");

}

0

আর একটি উপায় ভিউতে স্বচ্ছ বোতাম যুক্ত করছে

UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
b.frame = CGRectMake(0, 0, headerView.width, headerView.height);
[headerView addSubview:b];
[b addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchDown];

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

- (void)buttonClicked:(id)sender
{}

0

একটি অঙ্গভঙ্গি সনাক্তকারী (সাবক্লাস) তৈরি করুন, যা স্পর্শ ইভেন্টগুলি যেমন বাস্তবায়ন করবে touchesBegan । এর পরে আপনি এটিকে ভিউতে যুক্ত করতে পারেন।

এইভাবে আপনি সাবক্লাসিংয়ের পরিবর্তে রচনাটি ব্যবহার করবেন (যা অনুরোধ ছিল)।


0

ছেলেরা কেন এসএসইভেন্টলিস্টার ব্যবহার করে না ?

আপনার কোনও অঙ্গভঙ্গি শনাক্তকারী তৈরি করার প্রয়োজন নেই এবং আপনার যুক্তি অন্য পদ্ধতির সাথে আলাদা করতে হবে। SSEventListenerএকক ট্যাপ অঙ্গভঙ্গি, ডাবল আলতো চাপ অঙ্গভঙ্গি এবং আপনার পছন্দ হলে এন-ট্যাপ অঙ্গভঙ্গি এবং দীর্ঘ প্রেস অঙ্গভঙ্গি শুনতে শ্রুতি ব্লক সেট করতে সমর্থন করে। একক ট্যাপ অঙ্গভঙ্গির শ্রোতাদের সেট করা এইভাবে হয়ে যায়:

[view ss_addTapViewEventListener:^(UITapGestureRecognizer *recognizer) { ... } numberOfTapsRequired:1];


0

উদ্দেশ্য গ:

UIControl *headerView = [[UIControl alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, nextY)];
[headerView addTarget:self action:@selector(myEvent:) forControlEvents:UIControlEventTouchDown];

সুইফট:

let headerView = UIControl(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: nextY))
headerView.addTarget(self, action: #selector(myEvent(_:)), for: .touchDown)

প্রশ্নটি জিজ্ঞাসা করে:

আমি কীভাবে কোনও ইউআইভিউতে একটি স্পর্শ ইভেন্ট যুক্ত করব ?

এটি কোনও ট্যাপ ইভেন্টের জন্য জিজ্ঞাসা করছে না ।

বিশেষত ওপি বাস্তবায়ন করতে চায় UIControlEventTouchDown

স্যুইচিং UIViewকরতে UIControlএখানে হয় সঠিক উত্তর কারণ Gesture Recognisersসম্পর্কে কিছুই জানি না .touchDown, .touchUpInside, .touchUpOutsideইত্যাদি

অতিরিক্তভাবে, ইউআইসিএনট্রোল ইউআইভিউ থেকে উত্তরাধিকার সূত্রে আসে যাতে আপনি কোনও কার্যকারিতা হারাবেন না।

আপনি যা চান তা যদি একটি ট্যাপ হয় তবে আপনি অঙ্গভঙ্গি সনাক্তকারী ব্যবহার করতে পারেন। তবে আপনি যদি এই প্রশ্নটির মতো সূক্ষ্ম নিয়ন্ত্রণ চান তবে আপনার ইউআইসিএন্ট্রোল দরকার।

https://developer.apple.com/docamentation/uikit/uicontrol?language=objc https://developer.apple.com/docamentation/uikit/uigesturerecognizer?language=objc

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