Yahoo! JAPANをはじめ、Safariで見るとiPhone用のページが表示されるのに、UIWebViewに表示する場合はPC用のページが表示されてしまうサイトがあります。
このようなサイトは、たいていブラウザのUser-Agentによって、表示するページを切り替えています。
UIWebViewではUser-Agentを設定できないので、PC用のページが表示されてしまいます。
Undocumentedな方法になりますが、以下のようにすると、UIWebViewにUser-Agentを設定することができます。
#import <objc/runtime.h> @interface MyWebViewController : UIViewController { IBOutlet UIWebView *myWebView; } - (void)viewDidLoad { NSString *userAgent = @"Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20"; id webDocumentView; id webView; webDocumentView = objc_msgSend(myWebView, @selector(_documentView)); object_getInstanceVariable(webDocumentView, "_webView", (void**)&webView); objc_msgSend(webView, @selector(setCustomUserAgent:), userAgent); }
解説すると、まずUIWebViewの_documentViewメソッドを呼び出して、UIWebDocumentViewを取得します。
次にUIWebDocumentViewのインスタンス変数である_webViewを取り出します。
_webViewはWebViewクラスのインスタンスで、setCustomUserAgent:というメソッドを持っているので、それを使うと任意のUser-Agentでリクエストを送信できます。
あくまでもUndocumentedな方法なので、これで審査が通るかどうかは分かりません。