এটি অর্জনের জন্য আমি যে সর্বোত্তম উপায়টি খুঁজে পেয়েছি তা হ'ল জেচার রিকগনিজার with অন্যান্য উপায়গুলি প্রচুর হ্যাকিশ প্রোগ্রামিংয়ের সাথে জড়িত রয়েছে যা অ্যাপল এর কোডটিকে অসম্পূর্ণভাবে ডুপ্লিকেট করে, বিশেষত মাল্টিটুচের ক্ষেত্রে।
আমি যা করি তা এখানে: একটি অঙ্গভঙ্গি সনাক্তকারী কার্যকর করুন যা প্রতিরোধ করা যায় না এবং যা অন্যান্য অঙ্গভঙ্গি সনাক্তকারীদের আটকাতে পারে না। এটিকে মানচিত্রের দৃশ্যে যুক্ত করুন এবং তারপরে আপনার অভিনব রূপে অঙ্গভঙ্গি সনাক্তকারীের ছোঁড়াবেগান, ছোঁয়া মোড ইত্যাদি ব্যবহার করুন।
কোনও এমকেম্যাপভিউয়ের অভ্যন্তরে কোনও ট্যাপ কীভাবে সনাক্ত করবেন (কৌশলগুলি স্যানস)
WildcardGestureRecognizer * tapInterceptor = [[WildcardGestureRecognizer alloc] init];
tapInterceptor.touchesBeganCallback = ^(NSSet * touches, UIEvent * event) {
self.lockedOnUserLocation = NO;
};
[mapView addGestureRecognizer:tapInterceptor];
ওয়াইল্ডকার্ডেস্টেকার সনাক্তকারী
#import <Foundation/Foundation.h>
typedef void (^TouchesEventBlock)(NSSet * touches, UIEvent * event);
@interface WildcardGestureRecognizer : UIGestureRecognizer {
TouchesEventBlock touchesBeganCallback;
}
@property(copy) TouchesEventBlock touchesBeganCallback;
@end
ওয়াইল্ডকার্ডেস্টচারআর সনাক্তকারী.এম
#import "WildcardGestureRecognizer.h"
@implementation WildcardGestureRecognizer
@synthesize touchesBeganCallback;
-(id) init{
if (self = [super init])
{
self.cancelsTouchesInView = NO;
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (touchesBeganCallback)
touchesBeganCallback(touches, event);
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
}
- (void)reset
{
}
- (void)ignoreTouch:(UITouch *)touch forEvent:(UIEvent *)event
{
}
- (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer *)preventingGestureRecognizer
{
return NO;
}
- (BOOL)canPreventGestureRecognizer:(UIGestureRecognizer *)preventedGestureRecognizer
{
return NO;
}
@end
সুইফট 3
let tapInterceptor = WildCardGestureRecognizer(target: nil, action: nil)
tapInterceptor.touchesBeganCallback = {
_, _ in
self.lockedOnUserLocation = false
}
mapView.addGestureRecognizer(tapInterceptor)
ওয়াইল্ডকার্ডগাস্টারআরকগনিজার.সুইফ্ট
import UIKit.UIGestureRecognizerSubclass
class WildCardGestureRecognizer: UIGestureRecognizer {
var touchesBeganCallback: ((Set<UITouch>, UIEvent) -> Void)?
override init(target: Any?, action: Selector?) {
super.init(target: target, action: action)
self.cancelsTouchesInView = false
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent) {
super.touchesBegan(touches, with: event)
touchesBeganCallback?(touches, event)
}
override func canPrevent(_ preventedGestureRecognizer: UIGestureRecognizer) -> Bool {
return false
}
override func canBePrevented(by preventingGestureRecognizer: UIGestureRecognizer) -> Bool {
return false
}
}