سؤال

لدي حاليًا الرمز التالي الذي يقوم بتحميل UIWEBView من عرض آخر. الآن هل هناك على أي حال يمكنني الحصول على زر إغلاق؟

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UIWebView *webView=[[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
    [self.view addSubview:webView];
    NSURLRequest *urlRequest;
    NSURL *urlforWebView;
    urlforWebView=[NSURL URLWithString:@"http://www.google.com"];
    urlRequest=[NSURLRequest requestWithURL:urlforWebView];
    [webView loadRequest:urlRequest];

}

سأقوم بتحميل صفحة مصممة باستخدام jQuery Mobile ، لذا فإن زر الإغلاق داخل الصفحة سيعمل أيضًا بشكل جيد. ولكن على شريط الملاحة سيكون مثاليًا. راجع للشغل ، طلبي يفعل ليس لديك uinavigationbar

هل كانت مفيدة؟

المحلول

سأقوم بإنشاء فئة فرعية جديدة UIViewController, ، قل WebViewController مع بنك الاستثمار القومي. ثم سأضيف UINavigationBar مع زر إغلاق و UIWebView. ثم لإظهار وحدة التحكم في عرض الويب الخاصة بك ، يمكنك القيام بشيء مثل:

WebViewController *webViewController = [[WebViewController alloc] init];
webViewController.loadURL = [NSURL URLWithString:@"http://www.google.com"];
[self presentModalViewController:webViewController animated:YES];
[webViewController release];

في الخاص بك WebViewController يمكنك تحديد:

@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) NSURL *loadURL;

- (IBAction)close:(id)sender;

وتنفيذ شيء مثل هذا:

- (void)viewDidLoad {
  [super viewDidLoad]

  NSURLRequest *urlRequest = [NSURLRequest requestWithURL:self.loadURL];
  [self.webView loadRequest:urlRequest];
}

- (IBAction)close:(id)sender {
  [self dismissModalViewControllerAnimated:YES];
}

نصائح أخرى

كلما قمت بتحميل UIWEBView ، يمكنك تشغيل مقتطف JavaScript على المحتوى أولاً.

[webView stringByEvaluatingJavaScriptFromString:@"window.close = function() { window.location = 'app://close-webview'; };"];

هذا مجرد اختطاف السلوك الطبيعي لـ window.close() ويمنحك فرصة لالتقاط المكالمة في الهدف- C.

ثم في UIWEBViewDelegate ، يمكنك الاستماع إلى كل ما اخترته باعتباره عنوان URL القريب.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if([request.URL.absoluteString isEqualToString:@"app://close-webview"]) {
        webView.hidden = YES;
        // or whatever you want to do to remove the UIWebView...
        return NO;
    }
    return YES;
}

مخترق بعض الشيء ، لكنه سيسمح لمطور الويب بالتحكم في مظهر الزر الإغلاق ومظهره من داخل محتوى HTML.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top