2012-03-09 35 views
6

我一直試圖在我的iPad應用程序中插入一個小的webview(320x480),以模擬顯示移動Twitter的小「iPhone屏幕」。但是,每當uiwebview獲得NSUrlRequest加載http://mobile.twitter.com時,我的應用程序會自動從屏幕上撕掉,iOS會打開Twitter的Twitter。在UIWebView上請求http://mobile.twitter.com

有什麼方法可以改變這種行爲嗎?

下面是我在做什麼:

UIWebView *viewDoTwitter = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.bounds.size.height)]; 
viewDoTwitter.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
viewDoTwitter.scalesPageToFit = YES; 

[rootView insertSubview:viewDoTwitter atIndex:0]; 
[viewDoTwitter loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mobile.twitter.com"]]]; 

編輯:

OK,我找到了解決辦法,在這裏:http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview

UIWebView *viewDoTwitter = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.bounds.size.height)]; 
viewDoTwitter.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
viewDoTwitter.scalesPageToFit = YES; 

NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3", @"UserAgent", nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary]; 

[rootView insertSubview:viewDoTwitter atIndex:0]; 

[viewDoTwitter loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.twitter.com"]]]; 

但是,現在面臨一個新的問題:移動.twitter.com堅持要適應iPad屏幕的大小,而不是我指定的320像素寬度。

+0

你可以發佈你的UIWebView代碼嗎? – 2012-03-09 11:08:14

+0

你只想在這個視圖中顯示twitter網頁,或者使它可以用於用戶或其他東西? – 2012-03-09 11:10:56

+0

是的,它需要對用戶可用。 – JulianoRossi 2012-03-09 11:29:39

回答

1

如果你是這樣做,你不應該被重定向

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSURL *url = [NSURL URLWithString:@"http://mobile.twitter.com"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:request]; 
} 

您所描述的行爲是可以實現的這行代碼(重定向):

[[UIApplication sharedApplication] openURL:url]; 
+0

我這樣做:[viewDoTwitter loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@「http://m.twitter.com」]]]; – JulianoRossi 2012-03-09 11:19:09

1

我已經在許多應用程序中也注意到了UIWebView中的這種新行爲。這只是從今天開始發生,因爲昨天所有這些應用程序都運行良好。

如果您嘗試在UIWebView中連接到https://mobile.twitter.com(請注意url爲「https」),您將進入Twitter登錄屏幕,但輸入憑據後,網站會嘗試將您的應用重定向到twitter:// timeline after登錄。如果您沒有在設備上安裝正式的Twitter本機移動應用程序,則無法在UIWebView中瀏覽Twitter移動網站。如果您安裝了Twitter本機應用程序,您將被重定向到該應用程序,而不是在UIWebView中瀏覽移動網站。

奇怪的是,如果您在Mobile Safari中嘗試相同的操作,則不會將此重定向行爲獲得給原生Twitter移動應用程序。

這是Twitter的一種新的限制,因爲這將打破許多應用程序訪問UIWebView中的移動Twitter網站。

我不確定其他用戶是否也經歷過這種相同的新行爲?

PS:剛剛檢查了Twitter開發者的支持討論區和其他人遇到了同樣的問題?

+1

我發現它與webview的用戶代理有關,這就是爲什麼UIWebView和MobileSafari之間的行爲不同。 – JulianoRossi 2012-03-09 11:48:34

+0

你有任何修復,使其工作? – 2012-03-09 15:39:45

+0

看看我的問題頂部的「編輯」。 – JulianoRossi 2012-03-09 16:36:12