5

私のiPhoneアプリでは、UITextViewにURLが含まれています。このURLをsafariで開くのではなく、UIWebViewで開きたいですか?私のUITextViewには、URLとともにいくつかのデータが含まれています。場合によってはありません。URLの数は複数にすることができます。

ありがとうサンディ

4

3 に答える 3

11

次の手順に従うことができます。

  1. UITextViewXibまたはStoryboardから取得した次のプロパティにチェックマークを付けます。

UITextViewのこれらのプロパティを確認してください

または、動的に取得されるテキストビュー用にこれらを記述します。

textview.delegate=self;
textview.selectable=YES;
textView.dataDetectorTypes = UIDataDetectorTypeLink;
  1. delegate次に、以下のメソッドを記述します。
-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
 NSLog(@"URL: %@", URL);
//You can do anything with the URL here (like open in other web view).
    return NO;
}

あなたはそれを探していると思います。

于 2014-01-24T15:43:01.483 に答える
9

UITextViewには、URLを検出し、それに応じてハイパーリンクを埋め込む機能があります。次の場所でそのオプションをオンにできます。

myTextView.dataDetectorTypes = UIDataDetectorTypeLink;

次に、このURLリクエストをトラップし、アプリケーションに処理させるようにアプリを構成する必要があります。これを行うボイラープレートクラスをgithubで公開しました。これは、最も簡単なルートである可能性があります:http: //github.com/nbuggia/Browser-View-Controller--iPhone-

最初のステップは、UIApplicationをサブクラス化して、「openUrl」リクエストで誰がアクションを実行できるかをオーバーライドできるようにすることです。そのクラスは次のようになります。

#import <UIKit/UIKit.h>
#import "MyAppDelegate.h"

@interface MyApplication : UIApplication

-(BOOL)openURL:(NSURL *)url;

@end


@implementation MyApplication

-(BOOL)openURL:(NSURL *)url 
{
    BOOL couldWeOpenUrl = NO;

    NSString* scheme = [url.scheme lowercaseString];
    if([scheme compare:@"http"] == NSOrderedSame 
        || [scheme compare:@"https"] == NSOrderedSame)
    {
        // TODO - Update the cast below with the name of your AppDelegate
        couldWeOpenUrl = [(MyAppDelegate*)self.delegate openURL:url];
    }

    if(!couldWeOpenUrl)
    {
        return [super openURL:url];
    }
    else
    {
        return YES;
    }
}


@end

次に、main.mを更新しMyApplication.hて、UIApplicationクラスのbonifiedデリゲートとして指定する必要があります。main.mを開き、次の行を変更します。

int retVal = UIApplicationMain(argc, argv, nil, nil);

これに

int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);

最後に、[(MyAppDelegate *)openURL:url]メソッドを実装して、URLで好きなことを実行できるようにする必要があります。たとえば、UIWebViewを含む新しいView Controllerを開き、URLを表示します。あなたはこのようなことをすることができます:

- (BOOL)openURL:(NSURL*)url
{
    BrowserViewController *bvc = [[BrowserViewController alloc] initWithUrls:url];
    [self.navigationController pushViewController:bvc animated:YES];
    [bvc release];

    return YES;
}

うまくいけば、それはあなたのために働くはずです。

于 2011-10-29T00:39:50.137 に答える
3

次のインスタンスがあると仮定すると、それらもUIViewに追加されます。

UITextView *textView;
UIWebView *webView;

textViewにURL文字列が含まれている場合、次のようにURLの内容をwebViewにロードできます。

NSURL *url = [NSURL URLWithString:textView.text];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[webView loadRequest:req];
于 2009-10-12T16:01:05.407 に答える