0

在浏览了许多 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>

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

有什么想法吗?

4

1 回答 1

1

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

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

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

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

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

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

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

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

单击 UIWebView 中的链接会推送到 NavigationView 堆栈

iPhone UIWebView - 从超链接打开新的 UIWebView 控制器

UIWebView 链接点击

从 UIWebView 中的链接调用方法

在 UIWebView 中打开链接

从 UIWebView 中的链接打开 iOS6 Apple Maps 应用程序

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

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

于 2013-10-18T14:24:26.540 回答