2009-02-17 31 views
5

Vì vậy, tôi không thể tìm thấy bất kỳ tài liệu hướng dẫn về cách làm điều này, có thể ai đó biết những gì đang xảy ra ở đây.iPhone UIWebView phát MP3. Giao thức loại bỏ?

Tôi đang ở trong chế độ UITableView (với UINavigationController) trong ứng dụng của mình và khởi chạy UIWebView tải tệp mp3 lên internet bằng cách đẩy bộ điều khiển của Chế độ xem web lên ngăn xếp của bộ điều khiển điều hướng. Điều này làm việc tuyệt vời, tệp khởi chạy và phát trong trình phát nhanh mà Safari sử dụng.

Vấn đề là sau khi tệp âm thanh được phát xong hoặc người dùng nhấp vào nút xong, trình phát sẽ được phát hành và ứng dụng quay trở lại một webView trống với thanh điều hướng của tôi. Tôi có thể nhấn nút quay lại để quay lại UITableView ban đầu của tôi, nhưng màn hình trống đó là xấu và cần phải đi.

Vì vậy, tôi có thể sử dụng hành động nào để đặt thông báo [webviewcontroller.navigationcontroller popviewcontroller]? Là nó tải một thể hiện của một số lớp khác (như AVAudioPlayer) để chơi âm thanh? Tôi có cần phải phân lớp một cái gì đó? Tài liệu của Apple về cách nó phát âm thanh trong UIWebView về cơ bản là không tồn tại.

Trả lời

1

Bạn có thể giả mạo nó bằng cách có một số thay đổi javascript location.href, và sau đó làm một cái gì đó như thế này:

- (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; 
} 

Nếu điều đó không làm việc, bạn luôn có thể thăm dò ý kiến ​​nó bằng cách làm một

stringByEvaluatingJavaScriptFromString 
+0

whoa, tôi không chắc đó có phải là điều tôi đang yêu cầu hay không. Khi kết thúc chơi mp3, có vẻ như để kích hoạt sự kiện tương tự như cách nhấp vào nút "được thực hiện", cả hai đều đưa người dùng đến một webview trống. Những gì tôi muốn làm là bật bộ điều khiển xem ra khỏi ngăn xếp khi chúng sắp nhấn trang này. –

+0

Vâng, đó là một chút của một hack nhưng về cơ bản thông qua javascript, bạn sẽ có thể bắn một cái gì đó trên một bộ đếm thời gian hoặc sự kiện thay đổi vị trí, sau đó lắng nghe cho rằng "sự kiện" trong đại biểu và pop – slf

5

Ok, vì vậy tôi đã tìm thấy một giải pháp tốt hơn, đơn giản hơn nhiều; một là tôi phải xóa các dòng mã khỏi ứng dụng của mình để sử dụng. Tôi chỉ sử dụng UIWebview initWithFrame: CGRectMake (0.0.0.0,1.0,1.0), không thêm nó vào khung nhìn, sau đó được gọi là NSURLRequest và nối nó vào nút của tôi. Trình phát đa phương tiện của trình phát đa phương tiện tự động và không cần phải gọi trình điều khiển điều hướng.

+0

hack đẹp, vui mừng khi nghe bạn cố định nó – slf

+1

Mẹo này rất hữu ích, mặc dù trong trình mô phỏng iOS 6.1, tôi đã phải thêm nó vào chế độ xem để nó hoạt động. [self.view addSubview: self.webView]; – DenVog

1

Điều này có thể tiết kiệm cho ai đó một hoặc hai giờ: UIWebView hoạt động khác trên thiết bị và trên trình mô phỏng (khoảng iOS 4.1).

Tôi vừa dành chút thời gian cố gắng loại bỏ chế độ xem web trên trình mô phỏng nhưng nó đang hoạt động trên thiết bị toàn bộ thời gian.

Các vấn đề liên quan