Intereting Posts
उपयोगकर्ता स्थान मानचित्रकिट ViewDidLoad यूनिटी से आईओएस आवेदन खोलें भुगतान लेनदेन राज्य विफल एपीआई एक्सेस के साथ होस्टिंग छवि के लिए सिफारिश की आवश्यकता है नए iPad के लिए उच्च संकल्प / रेटिना डिस्प्ले ऐप आइकन फ़ाइल नाम DialogViewController पर पृष्ठभूमि को पारदर्शी कैसे सेट करें दृश्य नियंत्रक में स्विफ्ट / संपादन मोड सक्षम करें मैं SceneKit में एकाधिक ऑब्जेक्ट कैसे लोड कर सकता हूं? आईओएस एप के लिए अधिकतम आकार आईओएस: स्क्रीन पर ठीक स्थिति के साथ सबव्यू जोड़ें आईओएस यूएसएस नंबर पर ऑटो फॉर्मेट स्थानीय नंबर को सहायता प्रदान करता है मूल एंड्रॉइड नेविगेटर का जवाब दें दो अलग परतों आईओएस, कोर ग्राफिक्स पर कैसे आकर्षित करने के लिए अघोषित पहचानकर्ता स्वयं का उपयोग AVPlayer से एचएलएस के पीसीएम डेटा प्राप्त करना

आईओएस 11 को पूरे एप के अंदर खींचने के लिए कैसे अक्षम करें?

सुरक्षा कारणों से मैं अपने पूरे ऐप के अंदर नए आईओएस 11 ड्रैग एंड डॉप सुविधा को अक्षम करना चाहता हूं। अधिक विशेष रूप से खींचें भाग।

आईओएस 11 में सभी जगहों पर टेक्स्ट के लिए डिफ़ॉल्ट रूप से हो रहा है जहां पाठ को चुना जा सकता है – पॉपअप, टेक्स्टव्यूज़, वेबव्यूज़ आदि।

Solutions Collecting From Web of "आईओएस 11 को पूरे एप के अंदर खींचने के लिए कैसे अक्षम करें?"

मुझे ड्रैगिंग कार्यक्षमता को पूर्ण रूप से अक्षम करने के लिए किसी भी तरह से अवगत नहीं हूँ, लेकिन केवल अपने स्वयं के ऐप में खींचें सत्र को सीमित करने का एक तरीका है। यह सुरक्षा के मामले में पहले से ही एक बड़ा सुधार हो सकता है

सत्र पर एक नज़र डालेंःप्रतिबंधितटॉअरेगिंगअनुप्रयोग

dragInteraction (_: sessionIsRestrictedToDraggingApplication 🙂

अपने ऐप को यह पूछने के लिए कहा जाता है कि ड्रैग सत्र को उस ऐप तक सीमित रखा जाना चाहिए जिसमें यह आरंभ हो।

एक समाधान मिला यह तरीका है कि आपके ऐप की जरूरत पड़ने वाली स्थिति में कोई भी वापसी करने के लिए यूआईडीआरएजी इंटरएक्शन की सक्षम विधि है। ध्यान दें कि सामान्य रूप से यह विधि के लिए एक अच्छा विचार नहीं है swizzle

@implementation UIDragInteraction (TextLimitations) + (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ Class class = [self class]; SEL originalSelector = @selector(isEnabled); SEL swizzledSelector = @selector(restrictIsEnabled); Method originalMethod = class_getInstanceMethod(class, originalSelector); Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); BOOL didAddMethod = class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)); if (didAddMethod) { class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); } else { method_exchangeImplementations(originalMethod, swizzledMethod); } }); } -(BOOL)restrictIsEnabled { if (restrictedCondition) { return NO; } return [self restrictIsEnabled]; } 

खींचें और ड्रॉप डिफ़ॉल्ट रूप से सक्षम नहीं है आपको अपने दृश्य में ड्रैग इंटरैक्शन प्रतिनिधि प्रदान करके इसे सक्षम करना होगा। इसलिए आपको ड्रैग एंड ड्रॉप को अक्षम करने की ज़रूरत नहीं है, अगर आपने इसे लागू नहीं किया है

ध्यान दें:
पाठ दृश्य और टेक्स्ट फ़ील्ड स्वचालित रूप से खींचें और ड्रॉप का समर्थन करते हैं। लेकिन UIMenuController का उपयोग करते हुए एक स्रोत से दूसरे स्रोत को कॉपी की अनुमति देने के लिए इसका डिफ़ॉल्ट व्यवहार है। खींचें और ड्रॉप पाठ इनपुट दृश्यों के लिए अपनी पाठ सामग्री को कॉपी-पेस्ट करना आसान बनाता है। UIMenuController का उपयोग कर डेटा साझाकरण के लिए मौजूदा स्थिर ओएस सुविधाओं की तुलना में, ड्रैग एंड ड्रॉप का डेटा सुरक्षा चिंता का कोई प्रभाव नहीं पड़ता है।

यहां एप्पल का वक्तव्य समान है

खींचें स्रोत में एक दृश्य बनाना एक दृश्य के लिए एक ड्रैग इंटरैक्शन प्रतिनिधि ( यूआईडीआरएजी इंटरएक्शन डिलीएट ) को कार्यान्वित करके, आप अपने ऐप में ड्रैग स्रोत के रूप में कार्य करने के लिए उस दृश्य को सक्षम करते हैं।

खींचें स्रोत के रूप में एक दृश्य सक्षम करें
UIView का कोई भी उदाहरण या उप-वर्ग ड्रैग स्रोत के रूप में कार्य कर सकता है। ऐसा करने के लिए आपके पहले चरण हैं:

  1. एक ड्रैग इंटरैक्शन बनाएं (एक यूआईडीआरएग इंटरटेनेशन इंस्टेंस)।
  2. ड्रैग इंटरैक्शन के प्रतिनिधि निर्दिष्ट करें (एक ऑब्जेक्ट जो यूआईडीआरएजी इंटरएक्शन डिलीएलेट प्रोटोकॉल के अनुरूप है)
  3. व्यू के इंटरैक्शन संपत्ति में इंटरैक्शन जोड़ें

यह एक कस्टम सहायक पद्धति का उपयोग करके यह कैसे करें, जिसे आप आमतौर पर एक दृश्य नियंत्रक के viewDidLoad () विधि में कॉल करेंगे:

 func customEnableDragging(on view: UIView, dragInteractionDelegate: UIDragInteractionDelegate) { let dragInteraction = UIDragInteraction(delegate: dragInteractionDelegate) view.addInteraction(dragInteraction) } 

एक खींचें वस्तु बनाएं
एक ड्रैग आइटम एक मॉडल ऑब्जेक्ट के लिए विभिन्न प्रकार के डेटा प्रस्तुति प्रदान करने के लिए एक स्रोत ऐप के वादे को सामने आता है।
खींचें आइटम बनाने के लिए, अपने ड्रैग इंटरैक्शन प्रतिनिधि में dragInteraction (_: itemsForBeginning) विधि को लागू करें, जैसा कि एक न्यूनतम रूप में दिखाया गया है:

 func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] { // Cast to NSString is required for NSItemProviderWriting support. let stringItemProvider = NSItemProvider(object: "Hello World" as NSString) return [ UIDragItem(itemProvider: stringItemProvider) ] } 

यह कार्यान्वयन init (ऑब्जेक्ट 🙂 सुविधा initializer का उपयोग करता है जब आप किसी ड्रैग आइटम को इन्स्तांत करते हैं, तो अपने ऐप के मूल प्रस्तुतीकरण में एक ऑब्जेक्ट पास करें, या आप समर्थन वाले उच्चतम-निष्ठा प्रतिनिधित्व में। सामान्य तौर पर, यह सुनिश्चित करें कि आइटम प्रदाता के registeredTypeIdentifiers टंकइडिटिफ़ियर अरै में सबसे पहले तत्व उच्चतम-निष्ठापूर्ण डेटा का प्रतिनिधित्व करता है जो आपके ड्रैग इंटरैक्शन प्रतिनिधि को वितरित कर सकता है।

खींचें आइटम में अधिक डेटा प्रस्तुत करने के लिए, जैसा कि आप आमतौर पर अपने ऐप में करते हैं, उन्हें वफादारी के क्रम में, उच्चतम से सबसे कम तक जोड़ते हैं अभ्यावेदन जोड़ते समय, आपके पास विकल्प होते हैं:

  • एक ड्रैग आइटम में कई डेटा प्रस्तुत करने के लिए सबसे अच्छा विकल्प, कई मामलों में, अपने मॉडल वर्ग में NSItemProviderWriting प्रोटोकॉल को अपनाना है। इस प्रोटोकॉल का उपयोग करते हुए, आप मॉडल वर्ग के भीतर कई डेटा प्रस्तुति प्रदान करने के लिए कोड डालते हैं।
  • आप registerObject(_:visibility:) NSItemProvider registerObject(_:visibility:) विधि, या संबंधित विधियों, NSItemProvider वर्ग से, स्पष्ट रूप से डेटा प्रस्तुतियां रजिस्टर करने के लिए उपयोग कर सकते हैं।