2011-08-23 17 views
11

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

+0

क्या आप अभी भी वेबदृश्य पर छूना चाहते हैं? – Satyam

उत्तर

8

नहीं है, लूप अलंघनीय चयन से जुड़ा हुआ है। इसे अक्षम करने के लिए, आपको चयन को पूरी तरह अक्षम करना होगा (आप ऐसा करने के लिए -webkit-user-select: none का उपयोग कर सकते हैं)।

+4

दुर्भाग्यवश, यह मेरे लिए काम नहीं करता है। –

+1

यदि कोई इनपुट/टेक्स्टरेरा केंद्रित हो जाता है और कीबोर्ड पर "पूर्ण" स्पर्श करने वाले उपयोगकर्ता के बिना ब्लर होता है, तो यह चाल अब काम नहीं करेगी। (आईओएस 7) – vilicvane

3

क्योंकि मैं -webkit-user-select: none उपयोग करने के लिए पता नहीं कैसे मैं अन्य तरीकों के लिए देखा। और मैं इस Customize the contextual menu of UIWebView में ठोकर खाई तो मैंने इसे -webkit-user-select: none के साथ जोड़ा।

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitUserSelect='none';"]; 
} 
+1

'-webkit-user-select: none' कोई सीएसएस विशेषता नहीं है। तो आपको या तो आपके द्वारा पोस्ट किए गए कोड का उपयोग करने की आवश्यकता है, या यदि आपके वेबव्यू में प्रदर्शित वेब सामग्री तक पहुंच है, तो आप इसे अपने सीएसएस के साथ शामिल करेंगे। – Ben

7

क्योंकि स्वीकार्य समाधान मेरे लिए काम नहीं करता है, मुझे अन्य विकल्पों की तलाश करनी पड़ी और मुझे एक मिला।
ध्यान दें कि मुझे नहीं पता कि ऐप्पल इस तकनीक को मंजूरी दे रहा है या नहीं। इसे अपने डर और जोखिम पर प्रयोग करें।

(हमारा अस्वीकार नहीं किया गया था, मुझे नहीं लगता कि एप्पल परवाह करता है आप के बारे में ज्यादा UIWebView internals के साथ खिलवाड़ है, लेकिन चेतावनी दी है कि।)

क्या मैं था रिकर्सिवली नीचे UIWebView subviews चलना और उनके gestureRecognizers करके बताना। जब भी मुझे UILongPressGestureRecognizer का सामना करना पड़ता है, तो मैंने अपना enabledNO पर सेट किया है।

यह आवर्धक कांच की पूरी तरह और स्पष्ट रूप से छुटकारा हो जाता है किसी भी डिफ़ॉल्ट देर तक दबा कार्यक्षमता अक्षम।

ऐसा लगता है कि आईओएस पुन: सक्षम कर (या फिर से बनाता है) इन इशारा recognizers उपयोगकर्ता पाठ संपादित करने के लिए शुरू होता है जब भी।
ठीक है, मुझे टेक्स्ट फ़ील्ड में आवर्धक ग्लास का उपयोग करने में कोई फर्क नहीं पड़ता है, इसलिए मैं उन्हें तुरंत अक्षम नहीं करता हूं।

इसके बजाय, मैं अपने पाठ तत्वों पर blur घटना के लिए प्रतीक्षा करें, और जब यह होता है, मैं subview पेड़ फिर से चलना।
उस के रूप में सरल, और यह काम करता है।

+0

डाउनवोट के साथ क्या है? क्या दस्तावेज़ों के समाधान में कुछ गड़बड़ है जो हमारे लिए सफलतापूर्वक काम करता है? –

+0

यह मेरे लिए वैध लगता है। – mark

+0

स्विफ्ट plz में कोई भी कोड? –

2

मैं ने पाया है कि -webkit-user-select: none; अकेले चाल नहीं करता है। इसके बजाय मैं एक काफी गैर-दस्तावेजी संपत्ति -webkit-touch-callout

पाया है क्या मैं आमतौर पर Phonegap क्षुधा के साथ क्या यह है:

body, body * { 
    -webkit-user-select: none !important; 
    user-select: none !important; 
    -webkit-user-callout: none !important; 
    -webkit-touch-callout: none !important; 
} 
input, textarea { 
    -webkit-user-select: text !important; 
    user-select: text !important; 
    -webkit-user-callout: default !important; 
    -webkit-touch-callout: default !important; 
} 

कहीं यह उल्लेख किया गया था कि -webkit-user-callout-webkit-touch-callback की विरासत संस्करण है, मैं बस में इस डाल दिया है मामला।

+0

फोनगैप एप्लिकेशन में काम नहीं कर रहा है। मैंने इसे प्रत्येक div –

+0

@ Mo.Ashfaq के साथ करने की कोशिश की है जिसे आप आईओएस संस्करण के साथ परीक्षण करते हैं? आईफोन 5 एस में –

+0

आईओएस 8। अतिरिक्त जानकारी यह है कि मेरे पास कुछ तत्व हैं जैसे एच 2, आईएमजी मेरे div के भीतर और मैंने इस समाधान को प्रत्येक तत्व के लिए लागू किया है। –

0

हमारे Cordova & स्विफ्ट परियोजना मैंने किया था के लिए:

override init!(webView theWebView: UIWebView!) 
    {    
     super.init(webView: theWebView) 

     removeLoupe() 
    } 

    /** 
     Removes the magnifying glass by adding a long press gesture that overrides the inherent one that spawns 
     a the loupe by default. 
    */ 
    private func removeLoupe() 
    { 
     let views = webView?.subviews 
     if (views == nil || views?.count == 0) 
     { 
      return 
     } 

     let longPress = UILongPressGestureRecognizer(target: self, action: "handleLongPress:") 
     longPress.minimumPressDuration = 0.045 
     longPress.allowableMovement = 100.0 

     for view in views! 
     { 
      if (view.isKindOfClass(UIScrollView)) 
      { 
       let subViews = view.subviews 
       let browser = subViews[0] 
       browser.addGestureRecognizer(longPress) 
       break; 
      } 
     } 
    } 

    /** 
     Hack to override loupe appearence in webviews. 
    */ 
    func handleLongPress(sender:UILongPressGestureRecognizer) 
    { 

    } 

ध्यान दें कि यह मेरी CDVPlugin वर्ग है (या इसके बजाय अपने कस्टम संस्करण)।

मेक सुनिश्चित करें कि आपके config.xml फ़ाइल है:

<feature name="CustomCDVPlugin"> 
    <param name="ios-package" value="CustomCDVPlugin" /> 
    <param name="onload" value="true" /> 
</feature> 

इससे यह सुनिश्चित होगा init() विधि कहा जाता है।