Почему мой UIWebView не разрешает взаимодействие с пользователем? - PullRequest
1 голос
/ 30 марта 2010

Я новичок в этих форумах, поэтому я прошу прощения за мою новизну. Я провел настолько тщательный поиск, насколько мог, но я не смог найти никого другого с этой проблемой, извините, если это уже было освещено в другом месте.

Я создал очень простой пример своей проблемы. Я уверен, что что-то упустил, но я не могу на всю жизнь понять, что.

Я создаю UIWebView и добавляю его в пользовательский контроллер представления, который наследуется от UIViewController. Когда приложение загружается в симулятор iPad, uiwebview загружает нужную страницу, но UIWebView полностью не отвечает. Веб-просмотр не выполняет панорамирование или прокрутку, и ни одна из ссылок на странице не может быть нажата. Тем не менее, если вы измените ориентацию веб-просмотра suddleny все работает.

Заранее спасибо за помощь !!

заголовок AppDelegate


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

@interface FixEditorTestAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    EditorViewController *editorView;
}



    @property (nonatomic, retain) IBOutlet UIWindow *window;
    @property (nonatomic, retain) EditorViewController *editorView;

@end

Внедрение AppDelegate


#import "FixEditorTestAppDelegate.h"
#import "EditorViewController.h"



@implementation FixEditorTestAppDelegate



@synthesize window;
@synthesize editorView;




- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   
    NSLog(@"application is loading");
    editorView = [[EditorViewController alloc] init];
    [window addSubview:[editorView view]];
    [window makeKeyAndVisible];
    return YES;
}




- (void)dealloc {
    [window release];
    [editorView release];
    [super dealloc];
}
@end

Просмотр заголовка контроллера


#import <UIKit/UIKit.h>


@interface EditorViewController : UIViewController <UIWebViewDelegate> {
    UIWebView *webView;
}



@property (nonatomic, retain) UIWebView *webView;




@end

Просмотр реализации контроллера


#import "EditorViewController.h"



@implementation EditorViewController
@synthesize webView;



/*
// The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
        // Custom initialization
    }
    return self;
}
*/




// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
    NSLog(@"loadView called");

    UIView *curView = [[UIView alloc] init];

    webView = [[UIWebView alloc] init];
    webView.frame = CGRectMake(20, 40, 728, 964);
    webView.delegate = self;
    webView.backgroundColor = [UIColor redColor];

    [curView addSubview: webView];
    self.view = curView;

    [curView release];



}







//Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"viewDidLoad called");
    NSURL *url = [[NSURL alloc] initWithString:@"http://www.nytimes.com"];



    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    [webView loadRequest:request];
    [url autorelease];
    [request release];



}



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Overriden to allow any orientation.
    return YES;
}




- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}




- (void)viewDidUnload {
    webView.delegate = nil;
    [webView release];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}



- (void)dealloc {
    [super dealloc];
}




@end

Ответы [ 3 ]

2 голосов
/ 30 марта 2010

Вы действительно должны загрузить это из пера, но если вы собираетесь создать его программно, вы, вероятно, захотите добавить это в loadView:

webView.userInteractionEnabled = YES;
webView.scalesPageToFit = YES;
0 голосов
/ 09 августа 2010

Проблема с дополнительным UIView у вас там. Это не нужно, и я думаю, что сенсорные события не включаются. Я опробовал код, и он не сработал, как вы сказали. Затем я изменил EditorViewController на это, и теперь он работает (все, что я сделал, чтобы удалить лишний UIView), перетаскивание и выбор ссылок теперь работает.

- (void)loadView {
    NSLog(@"loadView called");

    webView = [[UIWebView alloc] init];
    webView.frame = CGRectMake(20, 40, 728, 964);
    webView.delegate = self;
    webView.backgroundColor = [UIColor redColor];

    self.view = webView;
}
0 голосов
/ 31 мая 2010

Я собираюсь выйти на конечность здесь, так как вы не получите большой ответ ..

В этом коде нет ничего плохого (на кончике! Я его не проверял). Также нет ничего плохого в том, чтобы не использовать .nib (но на самом деле у вас должна быть причина, верно?).

Использование пера не делает ничего волшебного, в значительной степени то, что вы сделали здесь.

Ваша проблема должна быть в другом месте. Можете ли вы взаимодействовать с другим видом зрения? Кнопка, говорите? Может быть, это как-то связано с настройкой окна?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...