web-dev-qa-db-ja.com

プログラムでUIWebViewを作成する

私はしばらくこれを試してみましたが、私はそれを正しくしていません。

サポートファイルに次の初期化関数を記述しました。

- (id)initWithFrame:(CGRect)frame
 {
    self = [super initWithFrame:frame];
    if (self) {
    webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 1024,768)];
 }
    return self;
}

そしてViewController.mで

- (void)viewDidLoad
{
   [super viewDidLoad];

   UIWebView *view = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
   NSString *url=@"http://www.google.com";
   NSURL *nsurl=[NSURL URLWithString:url];
   NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
   [view loadRequest:nsrequest]; 
}

また、appDelegateのdidFinishLaunchingWithOptions:メソッドでWebビューを作成しようとしましたが、機能しませんでした。

正しい方法は何ですか?

21
user1153798

このソリューションがお役に立てば幸いです。

  1. あなたの問題ごとに、単にこれらの行を- (void)viewDidLoadに追加してください
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
NSString *urlString = @"https://www.google.com";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
webView loadRequest:request];
[self.view addSubview:webView];

WebViewの静的フレームを使用しましたが、要件に応じて使用できます。

  1. ただし、UIWebViewは非推奨です。最初はiOS 12.0で非推奨-サポートされなくなりました。 WKWebViewを採用してください。そのため、Objective CおよびSwift=

Swift:

import WebKit

let theConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: view.frame, configuration: theConfiguration)
let nsurl = URL(string: "https://www.google.com")
var nsrequest: URLRequest? = nil
if let nsurl = nsurl {
    nsrequest = URLRequest(url: nsurl)
}
if let nsrequest = nsrequest {
    webView.load(nsrequest)
}
view.addSubview(webView)

目的C:

#import <WebKit/WKWebView.h>
#import <WebKit/WKWebViewConfiguration.h>

WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
NSURL *nsurl=[NSURL URLWithString:@"https://www.google.com"];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webView loadRequest:nsrequest];
[self.view addSubview:webView];
35
Ashvin Ajadiya

親ビューのサブビューとしてwebviewを追加するのを忘れているようです:

-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 1024,768)];
        [self addSubview:webview];
    }
    return self;
}

また、viewDidLoadはサブビューを作成する適切な場所ではありません。ビューのプロパティとしてwebviewを公開し、次のようにviewDidLoadからアクセスする必要があります。

NSString *url=@"http://www.google.com";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[[self.view webview] loadRequest:nsrequest]; 
4
dasblinkenlight

これは、@ Ashvin Ajadiyaの回答に対するわずかな改善です。デバイスに応じてWebビューの幅と高さを動的に設定するには、このコードをviewWillAppear内で使用します。そうしないと、適切なデバイスの幅と高さが得られません。

-(void)viewWillAppear:(BOOL)animated
{
    UIWebView *webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
    NSString *url=@"http://www.google.com";
    NSURL *nsurl=[NSURL URLWithString:url];
    NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
    [webview loadRequest:nsrequest];
    [self.view addSubview:webview];
}
0
BharathRao
UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)];
webView.delegate = self;   
NSString *url=@"http://www.google.com";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webview loadRequest:nsrequest]; 
[self.view addSubview:webview];

ViewcontrollerのインターフェースでUIWebviewDelegateを宣言します

0
Muzahidul Islam