Xcode / iOS6 / UIWebView URL / HTML链接不起作用

时间:2013-10-15 19:39:30

标签: ios6 uiwebview

浏览了大量Stack Overflow帖子后,我无法找到解决问题的方法。如果我问的是其他地方已经回答的问题,请向我说明正确的方向。

而且,如果我使用错误的术语,请不要对我太苛刻,因为我仍然对移动开发有点新意。

问题:我要做的就是点击本地网页中的一个链接,该链接会在UIWebView中被提取。目前,除了当前页面的短暂闪烁之外,当我点击链接时没有任何反应。

这就是我所在的地方:

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

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

3)我的小网页应用程序大部分位于我在加载应用程序时显示的网页中。我使用JavaScript,HTML和CSS来提供大部分功能(因为我已经有一个完全按照它应该做的网站)。

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

(如果您认为这是糟糕的设计,我会接受这一点。对于更好的方法的建议总是受欢迎的;但是,我需要在重构代码之前解决当前的问题。请耐心等待。)< / p>

以下是显示初始网页的代码:

// 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

所以在我的网页中,我使用标准的,正常的href链接指向维基百科,例如,就像这样(我必须在href部分使用空格以避免SO将其解释为链接,因为我只想显示链接的代码):

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

而且,正如我所提到的,当我点击或点按链接时,页面就在那里。该页面似乎重新加载并在屏幕上闪烁,但这就是我所看到的。

任何想法?

1 个答案:

答案 0 :(得分:1)

经过额外的搜索,最后在SO和一些外部链接上找到了一些非常好的信息,我现在看到我原来的问题是多么天真。事实证明,除了眼睛之外还有更多的东西。

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

我学到的最重要的事情是:

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

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

(3)如果您计划在UIWebView上运行HTML5,CSS3和JavaScript上的Web应用程序,您可以做很多事情,但您可能必须学习如何使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链接正常工作(以简单和最新的方式),请添加你的评论,我会尝试在这篇文章中实现它们。