【问题标题】:Xcode / iOS6 / UIWebView URL / HTML links do not workXcode / iOS6 / UIWebView URL / HTML 链接不起作用
【发布时间】:2013-10-15 19:39:29
【问题描述】:

在查看了大量 Stack Overflow 帖子后,我无法找到解决问题的方法。如果我在问一个已经在其他地方回答过的问题,请朝正确的方向点头。

如果我可能使用了错误的术语,请不要对我太苛刻,因为我还是个移动开发新手。

问题: 我要做的只是单击本地网页中的链接,该链接会在 UIWebView 中被拉出。目前,当我点击一个链接时,除了当前页面的短暂闪烁之外,什么也没有发生。

这就是我所在的位置:

1) 当应用程序加载时,我会显示一个显示“本地”网页的网页视图(这是我的 xcode 项目的一部分)。到目前为止,一切顺利。

2) 当最终用户点击一个项目(在我的例子中是地理区域,由一个标志表示)时,其他内容变得可见,包括几个链接,导致“外部”网络应用程序,如维基百科和地图网站。

3) 我的大部分小网络应用程序都在应用程序加载时显示的网页中。我使用 JavaScript、HTML 和 CSS 来提供大部分功能(因为我已经有一个网站完全可以做它应该做的事情)。

4) 但是,能够从我的起始页链接到其他网站至关重要。

(如果您认为这是糟糕的设计,我会接受。总是欢迎提出更好的方法的建议;但是,我确实需要先解决当前的问题,然后才能重构我的代码。请多多包涵。)

这是打开初始网页的代码:

// View Controller.h
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIWebView *spfWebView;
@end

// ViewController.m
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#import "ViewController.h"

@interface ViewController ()
@end

@implementation ViewController
@synthesize spfWebView;

- (void)viewDidLoad{

    [super viewDidLoad];

    //Web Site within XCode Project:
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"www/index" ofType:@"html"] isDirectory:NO];

    //NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    [NSURLConnection sendAsynchronousRequest:request queue:queue
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                     if ( [data length] > 0 && error == nil ){
                         [spfWebView loadRequest:request];
                     }else if (error != nil){
                         NSLog(@"Error: %@", error);
                     }
    }];

}

- (void)didReceiveMemoryWarning{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end

所以在我的网页中,我使用标准、普通的 a href 链接指向维基百科,例如,像这样(我不得不在 href 部分使用空格以避免 SO 将其解释为链接,因为我只是想向您展示链接的代码):

<a href ="http://en.wikipedia.org/wiki/Schaffhausen">Wikipedia</a>

而且,正如我所提到的,当我单击或点击链接时,页面就在那里。页面似乎短暂地重新加载并在屏幕上闪烁,但我看到的仅此而已。

有什么想法吗?

【问题讨论】:

    标签: ios6 uiwebview


    【解决方案1】:

    经过额外搜索并最终在此处找到一些关于 SO 和几个外部链接的非常好的信息,我现在看到我最初的问题是多么天真。事实证明,它的意义远不止眼前所见。

    我想快速解决一个比我意识到的需要更多工作的问题。

    我学到的最重要的东西是:

    (1) UIWebView 不一定与网络浏览器相同。

    (2) 在 UIWebView 中,您可以显示网页内容,是的,但您必须在 XCode 中单独处理页面点击。

    (3) 如果您计划在 HTML5、CSS3 和 JavaScript 上运行 Web 应用程序,在 UIWebView 内,您可以做很多事情,但您可能需要学习如何让 UIWebView 成为自身的委托,打开其他视图等。

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~

    我学到的经验主要来自以下来源:

    Clicking a link in UIWebView pushes onto the NavigationView stack

    iPhone UIWebView - Open new UIWebView Controller from a hyperlink

    UIWebView Link Click

    Calling methods from links in a UIWebView

    Open a link in a UIWebView

    Open iOS6 Apple Maps app from a link in a UIWebView

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~

    所以现在,我正在重构我的小手机应用程序,但是如果有人对使 UIWebView 链接正常工作(以简单且最新的方式)有一些额外的见解,请添加你的 cmets,我会尝试在这篇文章中实现它们。

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多