1

我有一个名为“homeview”的 UIWebView。每次有人浏览 UIWebview 时,我想检查页面 url 是否为“ http://www.website.com/cart ”,然后将选项卡控制器更改为第二个选项卡。

所以我这样做了:

- (BOOL)webView:(UIWebView *)homeview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *URLString = [[request URL] absoluteString];
if ([URLString isEqualToString:@"http://www.website.com/cart"]) {
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:2];
}
return YES;
}

但是没有运气......所以我试图在页面等于 url 时收到警报:

- (BOOL)webView:(UIWebView *)homeview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *URLString = [[request URL] absoluteString];
if ([URLString isEqualToString:@"http://www.website.com/cart"]) {
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Alert Title here"
                                                   message: @"Alert Message here"
                                                  delegate: self
                                         cancelButtonTitle:@"Cancel"
                                         otherButtonTitles:@"OK",nil];


    [alert show];
    [alert release];
}
return YES;
}

但这也不是诀窍......

上面的代码放在我的 FirstViewController.m 中,这是我的 FirstViewController.h:

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController
{
IBOutlet UIActivityIndicatorView *indicator;
IBOutlet UIWebView *homeview;
NSTimer *timer;
}
@property (retain, nonatomic) IBOutlet UIWebView *homepage;

@end

谁能帮帮我?

4

3 回答 3

3

尝试这个:

使用 * Compare: * 比较两个字符串。

- (BOOL)webView:(UIWebView *)homeview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *URLString = [[request URL] absoluteString];
if ([URLString Compare:@"http://www.website.com/cart"]==NSOrderedSame) {
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:2];
}
return YES;
}
于 2013-09-17T09:51:58.847 回答
1

我怀疑部分问题是您正在寻找与 URL“”完全匹配的http://www.website.com/cartURL,而您的 Web 视图真正加载的 URL 类似于“ http://www.website.com/cart?userid=123456&order=abcdefg&giftidea=something+expensive”。

乍一看,您的想法对我来说似乎是一个不错的方法,但请尝试更改此行:

if ([URLString isEqualToString:@"http://www.website.com/cart"]) {

对此:

if([URLString compare: @"http://www.website.com/cart" options: NSCaseInsensitiveSearch range: NSMakeRange(0, 27)] == NSOrderedSame)

看看你是否有更快乐的结果。

此外,为了更易读的代码,Apple 建议 Objective-C 变量和对象都以小写字母开头。因此,不要URLString使用“”,而是使用“ urlString”或更具描述性的内容,例如“ urlAsString”或“ urlStringFromWebView”。

于 2013-09-17T09:50:48.323 回答
0

如果 UIWebView 加载的 url 不完全等于你的,那么你可以检查你的字符串的位置是否为空。铁:

    if ([[[request URL] absoluteString]
            rangeOfString:@"http://www.website.com/cart"].location != NSNotFound) { ... }

或者您可以检查@“www.website.com/cart”行以考虑https协议

于 2013-09-17T10:15:29.083 回答