0

UIWebViewオブジェクトのURLクリックを上書きしようとしています。'webViewデリゲートが設定されている場所'に次のコードを追加する必要があることを知っています(このスレッドによると):

// TODO: This should intercept URL clicks in a UIWebView, causing (for now) links to open in Safari. It doesn't work yet; possibly it's in the wrong place. Should be in the same place as we 'set the webView delegate'...
// This doesn't appear to be set anywhere yet, which is probably where I'm going wrong.
- (BOOL)webView: (UIWebView*)webView shouldStartLoadWithRequest: (NSURLRequest*)request navigationType: (UIWebViewNavigationType)navigationType {

    if ( navigationType == UIWebViewNavigationTypeLinkClicked ) {
        [[UIApplication sharedApplication] openURL:[request URL]];
        return NO;
    }

    return YES;
}

しかし、実際にコードをどこに置くかはわかりません。上記のスレッドに関する1つの提案は、「self.webView.delegate=self;」という行の下のviewDidLoadメソッドに配置することです。ただし、私のUIWebViewは、実際にはUIAlertViewのように呼び出されるカスタムUIViewの一部です(実際、UIWebViewが含まれていることを除いて、UIAlertViewのほぼ正確なレプリカです)...したがって、私のメインアプリのViewControllerコードself.webViewオブジェクトを「表示」しないため、そこにデリゲートを設定できません。また、カスタムUIViewオブジェクト(UIWebViewオブジェクトを呼び出す)を指定する「m」ファイルには、viewDidLoadメソッドがありません。

おそらく、デリゲートがどこに設定されているのかわからないため、これに本当に苦労しています。

4

1 に答える 1

1

また、カスタムUIViewオブジェクト(UIWebViewオブジェクトを呼び出す)を指定する「m」ファイルには、viewDidLoadメソッドがありません。

- initWithFrame:次に、それをメソッドに入れます。

- (id)initWithFrame:(CGRect)frm
{
    if ((self = [super initWithFrame:frm])) {
         webView = [[UIWebView alloc] initWithFrame:frm]; // or whatever

         self.webView.delegate = self;
    }
    return self;
}
于 2012-10-30T23:23:39.910 に答える