2009-02-17 19 views
5

तो मुझे यह कैसे करना है इस पर कोई दस्तावेज नहीं मिल रहा है, शायद कोई जानता है कि यहां क्या हो रहा है।आईफोन UIWebView एमपी 3 खेल रहा है। डिसमिसल प्रोटोकॉल?

मैं अपने आवेदन में एक UITableView (एक UINavigationController के साथ) में हूं, और एक UIWebView लॉन्च करता हूं जो वेब व्यू के नियंत्रक को नेविगेशन नियंत्रक के ढेर पर धक्का देकर इंटरनेट पर एक एमपी 3 फ़ाइल लोड करता है। यह बहुत अच्छा काम करता है, फाइल सफारी का उपयोग करने वाले क्विकटाइम प्लेयर में लॉन्च और नाटकों।

समस्या यह है कि ऑडियो फ़ाइल समाप्त होने के बाद, या उपयोगकर्ता पूरा बटन क्लिक करता है, तो खिलाड़ी जारी किया जाता है और ऐप मेरे नेविगेशन बार के साथ एक खाली वेब व्यू पर वापस जाता है। मैं अपने मूल UITableView पर वापस जाने के लिए बैक बटन दबा सकता हूं, लेकिन वह खाली स्क्रीन बदसूरत है और उसे जाने की आवश्यकता है।

तो, मैं [webviewcontroller.navigationcontroller popviewcontroller] संदेश को रखने के लिए किस क्रिया का उपयोग कर सकता हूं? क्या यह ऑडियो चलाने के लिए किसी अन्य वर्ग (जैसे AVAudioPlayer) का उदाहरण लोड कर रहा है? क्या मुझे कुछ सबक्लास करने की ज़रूरत है? UIWebView में ऑडियो कैसे चलाता है इस पर एप्पल का दस्तावेज मूल रूप से nonexistant है।

उत्तर

1

आप कर सकते हैं नकली यह कुछ जावास्क्रिप्ट परिवर्तन location.href होने, और फिर कुछ इस तरह कर रही द्वारा:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
     navigationType:(UIWebViewNavigationType)navigationType { 

    NSString* path=[[request URL] relativePath]; 
    BOOL shouldContinue=YES; 

    if ([path isEqualToString:@"/_my_custom_link"]) 
    { 
     shouldContinue=NO; 
     // do magical stuff 
    } 
    return shouldContinue; 
} 

यदि वह काम नहीं करता है, तो आप हमेशा यह एक

stringByEvaluatingJavaScriptFromString 
करके मतदान कर सकते हैं
+0

व्हाओ, मुझे यकीन नहीं है कि मैं यही पूछ रहा था। जब एमपी 3 खेलना समाप्त हो जाता है, तो ऐसा लगता है कि "किया गया" बटन क्लिक करने के समान ही ईवेंट ट्रिगर होता है, जिसमें से दोनों उपयोगकर्ता को रिक्त वेबव्यू पर ले जाते हैं। मैं क्या करना चाहता हूं, जब वे इस पृष्ठ को हिट करने वाले हैं तो स्टैक से व्यू कंट्रोलर पॉप करें। –

+0

हाँ, यह एक हैक का थोड़ा सा है लेकिन मूल रूप से जावास्क्रिप्ट के माध्यम से आपको किसी टाइमर या ईवेंट पर कुछ आग लगाना चाहिए जो स्थान बदलता है, फिर प्रतिनिधि में उस "ईवेंट" को सुनें और पॉप – slf

5

ठीक है, तो मुझे एक बेहतर, बहुत आसान समाधान मिला; एक है कि मुझे अपने ऐप से उपयोग करने के लिए कोड की लाइनों को हटाना पड़ा। मैंने अभी UIWebview initWithFrame का उपयोग किया है: CGRectMake (0.0,0.0,1.0,1.0), इसे दृश्य में नहीं जोड़ा, फिर NSRLRequest कहा जाता है, और इसे मेरे बटन पर लगा दिया। मीडिया प्लेयर स्वचालित रूप से पूर्णस्क्रीन करता है, और एनएवी नियंत्रक को कॉल करने की कोई आवश्यकता नहीं है।

+0

अच्छा हैक, आपको सुनकर खुशी हुई इसे – slf

+1

तय किया गया यह युक्ति उपयोगी थी, हालांकि आईओएस 6.1 सिम्युलेटर में मुझे इसे काम करने के लिए इसे देखने के लिए जोड़ना पड़ा। [self.view addSubview: self.webView]; – DenVog

1

यह किसी को एक या दो घंटे बचा सकता है: UIWebView डिवाइस पर और सिम्युलेटर (लगभग आईओएस 4.1) पर अलग-अलग व्यवहार करता है।

मैंने सिम्युलेटर पर वेबव्यू को खारिज करने का प्रयास करने में कुछ समय बिताया लेकिन यह पूरे समय डिवाइस पर काम कर रहा था।

संबंधित मुद्दे