基本上,我試圖從我的應用程序中編程一個「tweet this」按鈕。根據他們在應用程序中的位置,他們可以點擊鳴叫按鈕,它會根據他們在哪裏發送的鳴叫消息將它們發送到Safari。UIApplication OpenUrl雙重轉義我的URL
爲了創建URL,我必須轉義我想放入NSUrl對象的查詢字符串。所以,我這樣做:
NSString* escapedTweet = [@"Some String With Spaces" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
串接基地後,我的網址出來 「http://www.twitter.com/home/?status=Some & 20String%20With%20Spaces」 - 看着它在調試器中,這絕對是值(如預期的那樣)。現在,我創建了我的網址,並推出Safari瀏覽器:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:escapedUrlString]];
但這裏的地方的問題來了:的OpenURL似乎逃避我百分號,使Safari瀏覽器進入到實際的URL爲「http:// WWW。 twitter.com/home/?status=Some%2520String%2520With%2520Spaces「,這顯然是一個問題,因爲twitter將狀態消息創建爲」Some%20String%20With%20Spaces「。
NSUrl不會允許我創建一個帶有空格的URL,所以我完全失去了如何讓我的URL只包含%20。有沒有其他人遇到這個問題或找到解決方法?
我在帶有最新操作系統的iPad上運行,不確定它是否是iPhone上的相同問題。
編輯:簡而言之,我如何讓openUrl打開http://www.twitter.com/home/?status=Some%20Url%20With%20Spaces而不逃避我的百分號並創建一個像http://www.twitter.com/home/?status=Some%2520Url%2520With%2520Spaces這樣的URL?
當你說「我的網址出來」,你的意思是你的網址或你的網址*字符串*?嘗試做'NSURL * url = [NSURL URLWithString:escapedUrlString];'並打印它,看看它是否是NSURL進行轉義而不是OpenURL。同時檢查控制檯日誌;我認爲SpringBoard.app打印正在打開的URL。 – 2010-10-02 15:11:46