दिलचस्प पोस्ट
पहचान वृद्धि SQL सर्वर डेटाबेस में कूद रही है MATLAB गुमनाम समारोह में कई बयान कैसे निष्पादित करें? तर्क के लिए एंड्रॉइड () विधि नहीं पाई जा सकी अजगर: लिपियों की अपनी निर्देशिका में लिपियों की कार्यशील निर्देशिका बदलें एनपी, एनपी-पूर्ण और एनपी-हार्ड के बीच अंतर क्या हैं? क्या MSBuild स्क्रिप्ट पर एक अच्छा ट्यूटोरियल है? मैवेन रिएक्टर बिल्ड से मॉड्यूल को बाहर कैसे करें? आदेश के बाद Angularjs गलत $ अनुक्रमणिका रेल 3 में सत्र का समय समाप्त करना ExecuteReader को एक खुला और उपलब्ध कनेक्शन की आवश्यकता है। कनेक्शन का वर्तमान स्थिति कनेक्ट हो रहा है एक्सएमएल दस्तावेज़ीकरण में जेनेरिक वर्गों और विधियों को कैसे संदर्भित किया जाए MySQL: त्रुटि कोड: 1118 पंक्ति का आकार बहुत बड़ा (> 8126)। कुछ कॉलम को टेक्स्ट या ब्लॉब में बदलना Matplotlib विभिन्न आकार subplots दृश्य स्टूडियो में कई डीएलएल के साथ एक प्रोजेक्ट आउटपुट है? पिक्चरबॉक्स पर पारदर्शी नियंत्रण

UIWebView में उपयोगकर्ता चयन को अक्षम करना

मेरे पास ऐप है जहां मैं UIWebView सामग्री लोड करता हूं और इसे पेश करता हूं। मैं पूरी तरह से उपयोगकर्ता इंटरैक्शन को अक्षम नहीं कर सकता क्योंकि मैं चाहता हूं कि उपयोगकर्ता लिंक पर क्लिक कर सकें। मुझे सिर्फ उपयोगकर्ता चयन अक्षम करने की आवश्यकता है मैंने कहीं ऐसे इंटरनेट्स में पाया जो आप उपयोग कर सकते हैं:

 document.body.style.webkitUserSelect='none'; 

मैंने इसे डालने की कोशिश की

 [self.contentView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitUserSelect='none';"]; 

webViewDidFinishLoad:

हालांकि, यह काम नहीं करता है मैं अभी भी WebView के भीतर पाठ का चयन और कॉपी करने में सक्षम हूं।

आपके हिसाब से क्या गलत हो सकता है?

अपडेट: यह केवल IOS 4.3 के साथ शुरू होने लगता है

वेब के समाधान से एकत्रित समाधान "UIWebView में उपयोगकर्ता चयन को अक्षम करना"

चयन को अक्षम करने के कुछ तरीके यहां दिए गए हैं:

अपने मोबाइल वेब दस्तावेज़ों के लिए निम्न जोड़ें

 <style type="text/css"> * { -webkit-touch-callout: none; -webkit-user-select: none; /* Disable selection/copy in UIWebView */ } </style> 

कार्यक्रम जावास्क्रिप्ट कोड को नीचे लोड करें:

 NSString * jsCallBack = @"window.getSelection().removeAllRanges();"; [webView stringByEvaluatingJavaScriptFromString:jsCallBack]; 

प्रतिलिपि / चिपकाएँ उपयोगकर्ता मेनू अक्षम करें:

 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(copy:) || action == @selector(paste:)|| action == @selector(cut:)) { return _copyCutAndPasteEnabled; } return [super canPerformAction:action withSender:sender]; } 

मैं पुष्टि कर सकता हूं कि निम्न कोड IOS 5.0 – 8.0 में काम करता है।

 - (void)webViewDidFinishLoad:(UIWebView *)webView { // Disable user selection [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; // Disable callout [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"]; } 

यह भी आईओएस 9 के लिए काम करता है। यहां स्विफ्ट कोड है:

 func webViewDidFinishLoad(webView: UIWebView) { // Disable user selection webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none'")! // Disable callout webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitTouchCallout='none'")! } 

मैं एंड्रॉइड / आईफ़ोन (ट्रिगर। आईओ के साथ पैक किया गया) के लिए एक वेब ऐप में इस तकनीक का उपयोग कर रहा हूं और पाया कि यह केवल: न () छद्म-वर्ग के लिए चेनिंग सिंटैक्स के साथ काम करेगा:

 *:not(input):not(textarea) { -webkit-user-select: none; /* disable selection/Copy of UIWebView */ -webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */ } 

मुझे WrightsCS समाधान पसंद है लेकिन मैं इसका उपयोग करूँगा ताकि उपयोगकर्ता अभी भी कॉपी, पेस्ट और इनपुट पर कार्रवाई का चयन कर सकें

 <style type="text/css"> *:not(input,textarea) { -webkit-touch-callout: none; -webkit-user-select: none; /* Disable selection/Copy of UIWebView */ } </style> 

मुझे यकीन नहीं है कि सेटअप कैसे किया जाता है, लेकिन क्यों नहीं आप पेस्टबोर्ड को साफ करते हैं जब दृश्यदृश्य को कॉल किया जाता है शायद आपके ऐप की तरह कुछ। एम:

 [UIPasteboard generalPasteboard].string = nil; 

यह सुनिश्चित करेगा कि जो भी डेटा उपयोगकर्ता कॉपी हो सकता है, वे ऐप के बाहर पेस्ट नहीं कर पाएंगे।

इसके अलावा, जैसे एंजिन ने कहा कि आप नियंत्रक वर्ग में canPerformSelector विधि को ओवरराइड कर सकते हैं जिसमें uiwebview शामिल है।

TPoschel उत्तर सही है लेकिन मेरे मामले क्रम में महत्वपूर्ण था।

 // this works - locks selection and callout - (void)webViewDidFinishLoad:(UIWebView *)webView { [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"]; } // this doesn't work - locks only callout - (void)webViewDidFinishLoad:(UIWebView *)webView { [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"]; [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; } 

मैं पुष्टि कर सकता हूं कि यह आपके लिए निश्चित रूप से काम करेगा I

 <style type="text/css"> *:not(input):not(textarea) { -webkit-user-select: none; /* disable selection/Copy of UIWebView */ -webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */ } </style> 

यदि आप चाहते हैं कि केवल एंकर बटन टैग को अक्षम करें तो इसका उपयोग करें।

  a {-webkit-user-select: none; /* disable selection/Copy of UIWebView */ -webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */ } 

एक सप्ताह के लिए महान काम का नतीजा! यदि आप कई पृष्ठों पर माउस ईवेंट और उपयोगकर्ता इनपुट सहेजना चाहते हैं तो अन्य सभी जवाब गलत हैं।

1) झिलमिलाना विधि ( किरायाजस्क / जेर्सविज़ल लाइब्रेरी द्वारा):

 [NSClassFromString(@"UIWebDocumentView") jr_swizzleMethod:@selector(canPerformAction:withSender:) withMethod:@selector(myCanPerformAction:withSender:) error:nil]; 

NSObject + myCanPerformAction.h:

 @interface NSObject (myCanPerformAction) - (BOOL)myCanPerformAction:(SEL)action withSender:(id)sender; @end 

NSObject + myCanPerformAction.m:

 #import "NSObject+myCanPerformAction.h" @implementation NSObject (myCanPerformAction) - (BOOL)myCanPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(copy:)) { return [self myCanPerformAction:action withSender:sender]; } if (action == @selector(paste:)) { return [self myCanPerformAction:action withSender:sender]; } return NO; } @end 

2) UIView पर UIWebView रखें और एक कोड जोड़ें:

  UITapGestureRecognizer* singleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)] autorelease]; singleTap.numberOfTapsRequired = 2; singleTap.numberOfTouchesRequired = 1; singleTap.delegate = self; [self.view addGestureRecognizer:singleTap]; 

और ये वाला:

 - (void)handleSingleTap:(UIGestureRecognizer*)gestureRecognizer { return; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if ([otherGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) { UITapGestureRecognizer *gesture = (UITapGestureRecognizer *)otherGestureRecognizer; if (gesture.numberOfTapsRequired == 2) { [otherGestureRecognizer.view removeGestureRecognizer:otherGestureRecognizer]; } } return YES; } 

दिए गए पहले समाधान ने मेरे लिए पूरी तरह से काम किया … जब तक मैं अपने UIWebView में .pdf लोड नहीं किया।

.doc फ़ाइल को पूरी तरह से लोड किया जा रहा है, लेकिन। पीडीएफ को लोड करने के परिणामस्वरूप कोड की निम्न पंक्ति अब वांछित प्रभाव नहीं रखती है और प्रतिलिपि / परिभाषित मेनू फिर से उपयोगकर्ता द्वारा एक लंबे समय तक स्पर्श पर पॉप अप हुआ।

  [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; 

बालों के एक और झड़प के बाद मैंने यहां जॉनी रॉकक्स द्वारा यह जवाब पाया और यह एक विजेता की तरह काम किया। पीडीएफ फाइलों को प्रदर्शित करते समय कॉपी / पेस्ट के बिना UIWebView

इस आसान कार्यान्वयन, प्रतिभा समाधान के लिए उन्हें बहुत धन्यवाद !!

मेरे लिए, मैं UIWebView से ' LongPressGesture छवियों को LongPressGesture करने का इरादा रखता LongPressGesture

लेकिन भेदक और प्रतिलिपि / पेस्ट / कट हमेशा मेरे func निष्पादित होने से पहले होते हैं।

और मैंने यह पाया: यहां छवि विवरण दर्ज करें

इसका अर्थ है, आवर्धक और प्रतिलिपि / पेस्ट / कट की जरूरत को चलाने के लिए 0.5 की आवश्यकता है, इसलिए यदि आपका फ़ंक्शन 0.49s में निष्पादित किया जा सकता है, तो!

 self.longPressPan.minimumPressDuration = 0.3 
  let longPress:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: nil, action: nil) longPress.minimumPressDuration = 0.2 webView.addGestureRecognizer(longPress) 

बस इस कोड को अपने viewDidLoad में जोड़ें () उपयोगकर्ता लिंक पर क्लिक कर सकते हैं लेकिन सामग्री की प्रतिलिपि नहीं कर सकते।

वेब दृश्य इंटैक्शन फ़ंक्शन का उपयोग करें

  webView.userInteractionEnabled = false 

इससे मेरा काम बनता है

पुनश्च: जब आप चाहते हैं कि उपयोगकर्ता इंटरव्यू के साथ फिर से बातचीत कर सके, तो बातचीत को वापस सक्षम करने के लिए याद रखें