我需要将Cyrillic字符作为参数传递到我的iPhone应用程序中的URL中.示例网址如下所示:
http://www.mysite.com/script.php?message =страшная
当我在浏览器中使用此URL时,它会返回正确的结果.但是,在我的应用程序中,西里尔字母不受欢迎,我最终在didFailWithError代码中得到一个"坏网址" .
我在浏览器中尝试了几种编码来解决这个问题,但没有运气.有没有办法通过iPhone应用程序实际发送上面的确切URL示例?我正在使用的代码片段是:
selectedWord = @"????????";
NSString *requestURL = [NSString stringWithFormat:@"http://www.mysite.com/script.php?message=%@", selectedWord];
NSLog (requestURL);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:requestURL]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,为了调试目的,我在NSString*selectedWord中硬编码了西里尔字.在实际应用中,它将基于用户输入而动态.
我尝试了一个更复杂的POST,认为我可以将西里尔文作为数据而不是文本传递,但要么我做错了,要么它也不起作用.
有关编码的任何示例我可以在我的浏览器中尝试,然后在应用程序中实现将是有帮助的.我意识到西里尔字母在NSURL中被拒绝,但我希望通过不同的代码或编码来绕过它.
我已成功地将自定义UIMenuItem添加到我的iPhone应用程序中的"复制和粘贴"菜单中,甚至还将UITextView子类化为删除标准菜单项.但是,我需要做的是以某种方式捕获菜单将在实际发生之前显示的事实,并将插入点处的单词添加到菜单中.
例如,如果UITextView中的文本是"This is a test".并且该人触摸了"是"这个词,它会将该词作为UIMenuItem添加到UIMenuController中.
重要的是菜单只有在触摸后才能直接显示该单词.菜单的下一次调用将显示触摸的下一个单词等.然后触摸菜单中的单词将显示更多细节.我已经有了基于selectedRange查找触摸单词的代码.我需要做的就是在菜单显示之前将该单词添加为UIMenuItem.另一个不太优雅的解决方案可能是允许此人触摸静态菜单项,然后根据触摸的单词添加并重新显示菜单,具有不同的选项.
我希望有一种方法可以拦截UIMenuController,可能通过子类化它,这样我可以在气球显示之前到达插入点,但仍然可以通过更改菜单项列表来对其进行更改.
有没有办法做到这一点?任何人都可以给我看一个代码片段或指向一些可能对我有帮助的文档吗?谢谢.
我唯一的其他解决方案是以某种方式创建自己的气球,并以某种方式禁用复制和粘贴菜单.我宁愿不必尝试.