Кнопки UIB внизу загруженного UIWebView - PullRequest
1 голос
/ 19 мая 2011

У меня есть UIWebView в нижней части UITableView:

[self.tableView setTableFooterView:webview];

Мне нужно добавить несколько кнопок в конце UIWebView.Высота UIWebView не постоянна.Если я сделаю что-то вроде

[webview addSubview:button];

Кнопка будет перекрывать веб-просмотр, поскольку координаты рамки кнопки основаны на начале UIWebView.Я думал об определении рамки кнопки после завершения загрузки UIWebView:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    CGRect frame = CGRectMake(10, webView.bounds.size.height, 280, 21);

Но проблема в том, что у меня также есть некоторые данные в UITableView, и их высота не постоянна.Конечно, я мог бы сохранять высоту UITableView в переменной при ее создании, но я думаю, что это очень уродливое решение.Я также подумал о том, чтобы в UITableView было 2 нижних колонтитула, но, похоже, это невозможно ... На всякий случай, если это уместно, UIWebView загружает строку HTML перед добавлением кнопок.Есть идеи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 мая 2011

Вы говорите, что думали о двух видах нижнего колонтитула. Очевидно, UITableView не поддерживает это. Но вы можете создать пользовательский UIView, содержащий UIWebView и кнопки, например ::10000

+--------------------------+
|                          |
|                          |
|                          |
|         web view         |
|                          |
|                          |
+--------------------------+
|                          |
| [button]        [button] |
|                          |
+--------------------------+

А затем установите это как представление нижнего колонтитула таблицы.

0 голосов
/ 19 мая 2011

Вы можете добавить кнопки в конце содержимого HTML, назначить им href, а затем использовать метод, описанный здесь , чтобы перехватить щелчок (посмотрите раздел обратного вызова JavaScript, где объясняется, как «Вызвать ваш код Objective C из JavaScript в UIWebView».

Идея заключается в определении правильного селектора -webView:shouldStartLoadWithRequest: в вашем делегате UIWebView. Это будет вызвано любой операцией, выполняемой в UIWebView, которая приведет к загрузке новой страницы.

В этом селекторе вы бы отклонили загрузку (вернув NO) и могли выполнять любую обработку ObjC, какую захотите, например ту, которую вы описали в своем комментарии.

Пример: ваша кнопка может быть

<button type="button" onClick="javascript:'button_1/YOU_URL">
    Click Me!
</button>

при нажатии на эту кнопку, webView shouldStartLoadWithRequest: будет вызываться там, где вы будете делать:

NSURL *url = [request URL];
NSString *urlString = [url absoluteString];
if ([urlString hasPrefix:@"button_1"]) {
   <DO YOUR PROCESSING HERE>
   return NO;
}

(не забудьте вернуть YES в самом конце селектора, если ни одна кнопка не была нажата)

Кстати, этот PDF действительно очень интересное чтение, если вы планируете интенсивно использовать UIWebView в своих приложениях для iOS.

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