Показаны сообщения с ярлыком UIWebView. Показать все сообщения
Показаны сообщения с ярлыком UIWebView. Показать все сообщения

вторник, 12 мая 2009 г.

Всплывающая подсказка в UIWebView

Если задержать палец на гиперссылке в UIWebView, то через пару секунд вылезет окошко с предложением скопировать ссылку или перейти по ней (OS 3.0 и выше). Чтобы запретить это окошко выполняем следующий javaScript

NSString *jsString =@"document.documentElement.style.webkitTouchCallout=\"none\"";
 [webView stringByEvaluatingJavaScriptFromString: jsString];


Выполнять конечно надо после того, как webView закончит загрузку

вторник, 5 мая 2009 г.

Скроллинг в UIWebView

Если нужно получить текущее положение скролла в UIWebView, либо устоновить скролл в заданную позицию, то есть 2 пути - Использовать java script или недокументированые методы. Как правило использование законных путей лучше. Поэтому о них и поговорим

Получить текущее положение скролла (вертикальное)

int scrollPosition = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];

Установить вертикальное положение скролла

int yOffset = 123;
NSString *jsString = [NSString stringWithFormat: @"window.scrollTo(0, %d) ", yOffset];
[_webView stringByEvaluatingJavaScriptFromString: jsString];  



Меняем размер шрифта в UIWebView

Для того, чтобы во время работы уменьшить/увеличить размер шрифта в UIWebView, воспользуемся архиполезной возможностью этого элемента, выполнять java script

 int fontScale = 150;
 NSString *jsString = [NSString stringWithFormat: @"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",  fontScale];
  [_webView stringByEvaluatingJavaScriptFromString: jsString];

 

Конечно делать это нужно только после того, как UIWebView  закончит загрузку своего содержимого


 

Ссылки в UIWebView

Иногда надо контролировать клики пользователя по гиперссылкам в UIWebView для этого необходимо назначить для webView делегата и переопределить в нем метод - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

Приведенный ниже код контролирует клики на линки и не дает пользователю переходить по ссылкам, заканчивающимся на ".com"

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

     if(navigationType == UIWebViewNavigationTypeLinkClicked)
     {
        NSString *fullLink = request.URL.path;
        if([fullLink hasSuffix:@".com"])
            {return NO;}
     } 
 return YES;
}
 


Картинки в UIWebView

Иногда нужно создать свой форматированый HTML текст и вывести его на экран. Для этого используется элемент UIWebView Если же в этом  тексте должны быть картинки, то

1. Добавляем файлы с картинками в проект

2. В HTML пишем просто  

3. В коде пишем 

NSString *htmlString = @"Html with image ";
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath: path];
[webView loadHTMLString: htmlString baseURL: baseURL];