限制UIWebView保留在Facebook页面上

时间:2013-02-25 11:13:18

标签: ios objective-c ipad uiwebview restriction

我需要制作一个简单的UIWebView for iPad,用于用户使用他们的帐户登录并能够看到固定的Facebook公共页面并能够滚动此页面,评论或喜欢帖子但无法前往的事件除此页面以外的其他地方。所以我正在使用

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
    {
        NSURL *url = request.URL;
        NSString *urlString = url.absoluteString;
        NSRange range = [urlString rangeOfString:@"http://m.facebook.com/groups/10621329941138"];
        if (range.location != NSNotFound)
        {
            return YES;
        }
        else
        {
            return NO;
        }
    }

每次当用户结束他的会话时,女主人都会从此页面注销到登录页面。经过一些实验后,我遇到了一些问题:

  • 首次加载时,我收到“您要求的页面现在无法显示...”http://uaimage.com/image/5a0cccea
  • 每次登出都会导致空白屏幕(问题.php?)
  • 如果我将阻止此页面中的所有链接,如何在会话结束时允许注销操作?

提前致谢!

2 个答案:

答案 0 :(得分:1)

试试这个:

if ([url.host.lowercaseString rangeOfString:@"facebook"].location == NSNotFound) {

    // Don't go since we're somewhere else now
    return NO;

} else {

    // We can go here
    return YES;

}

答案 1 :(得分:1)

之前我做过类似的事情,我会建议像

这样的事情
return [urlString hasPrefix:@"http://m.facebook.com/"];

这也可能是一个更安全的选择,因为它限制了一个域,而不是简单地检查完整URL路径中任何位置的facebook这个词的关键字。

你可能会更加花哨,并在“http://和第二个”之后的任何地方检查“facebook.com”。也可以使用NSURL的baseURL方法来帮助。

另外,您是否确定正确设置了UIWebView委托?