Используйте UIWebView в фоновом режиме - PullRequest
3 голосов
/ 08 июня 2009

Я хотел бы использовать объект UIWebView для запуска пользовательских методов javascript для локальной веб-страницы. Я могу сделать это, но я хотел бы сделать это в фоновом режиме, я имею в виду, пока я показываю контроллер навигации или любой другой контент, загружаю веб-страницы и вызываю на них методы javascript.

Как бы это сделать?

Ответы [ 3 ]

3 голосов
/ 11 сентября 2009

Мне удалось сделать это, просто создав веб-представление в памяти и никогда не отображая его. Он все еще существует и отлично работает.

self.backgroundWebView = [[[UIWebView alloc] initWithFrame:CGRectZero] autorelease];
[self.backgroundWebView loadRequest:[NSURLRequest requestWithURL:myURL]];
3 голосов
/ 08 июня 2009

Я не уверен, что вы подразумеваете под "в фоновом режиме", но если вы просто хотите, чтобы UIWebView не отображался, это свойство доступно для всех объектов UIView:

@property(nonatomic, getter=isHidden) BOOL hidden

Straght из класса ссылки :

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

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

Значение этого свойства отражает только состояние получателя и не учитывает состояние предки получателя в поле зрения иерархия. Таким образом, это свойство может быть НЕТ, если получатель скрыт, потому что предок скрыт.

0 голосов
/ 09 июня 2009

После инициализации веб-просмотра вы можете легко запустить фоновую ветку, которая обрабатывает представление и загружает страницу.

[NSThread detachNewThreadSelector:@selector(connectToServer) toTarget:self
                               withObject:nil];

.....

(void) connectToServer
{
    // in a different thread....so we need a autoreleasepool
    NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
    ... // do your stuff
    // load HTML on webview
   [autoreleasepool release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...