Подтвердить что ты не робот

Создание UIWebView программно

Я пробовал это некоторое время, но я не понимаю.

Я написал следующую функцию init в поддерживающем файле:

- (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 *[email protected]"http://www.google.com";
   NSURL *nsurl=[NSURL URLWithString:url];
   NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
   [view loadRequest:nsrequest]; 
}

Я также попытался создать webview в методе didFinishLaunchingWithOptions: appDelegate, но он также не работал.

Каков правильный путь?

4b9b3361

Ответ 1

Я надеюсь, что это решение поможет вам.

  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];

Ответ 2

Похоже, вы забыли добавить 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 *[email protected]"http://www.google.com";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[[self.view webview] loadRequest:nsrequest]; 

Ответ 3

UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)];
webView.delegate = self;   
NSString *[email protected]"http://www.google.com";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webview loadRequest:nsrequest]; 
[self.view addSubview:webview];

Объявить UIWebviewDelegate в интерфейсе viewcontroller

Ответ 4

Это ответ - небольшое улучшение по сравнению с ответом @Ashvin Ajadiya. Чтобы динамически установить ширину и высоту веб-представления в соответствии с вашим устройством, используйте этот код внутри viewWillAppear, иначе он не получит правильную ширину и высоту устройства.

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