Как определить масштаб увеличения UIWebView - PullRequest
4 голосов
/ 27 марта 2011

Я хочу увеличить высоту UIWebView при увеличении масштаба пользователя (как почтовое приложение по умолчанию в iPhone).Итак, я попробовал приведенный ниже код, чтобы найти представление прокрутки в веб-представлении и добавить UIScrollViewDelegate, чтобы использовать scrollViewDidZoom для определения масштаба увеличения, чтобы увеличить высоту веб-просмотра в этом методе.увеличение / уменьшение масштаба веб-просмотра, но NSLog на scrollViewDisEndZooming метод показал

масштаб 1,0

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

Что я сделал не так?Пожалуйста, помогите.

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 27 октября 2011

Я хорошо справился с вашим кодом, выполнив следующие изменения:

вы просто получаете точку класса scrollview, затем можете получить scrollview.contentSize.width, который может измениться при уменьшении масштаба, ноscrollview.zoomScale всегда остается 1. поэтому для вычисления масштаба необходимо использовать contensize.width.

@interface dictViewController : UIViewController<UIWebViewDelegate,UITextFieldDelegate,UIGestureRecognizerDelegate,UIScrollViewDelegate>{

UIScrollView *scrollview;
......................

//scrollview.delegate = self;

for (UIView *view in webViewM.subviews) {
    if ([view isKindOfClass:[UIScrollView class]]) {
        // Get UIScrollView object
        scrollview = (UIScrollView *) view;
        //scrollview.delegate = self;
    }
}
/*
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{
//NSLog(@"scale zooming %f",scale);
}

- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
//NSLog(@"scrollViewDidZoom %f",scrollview.zoomScale);
}*/


- (void)swipeRightAction:(id)ignored
{  

 NSLog(@"wid=%f", scrollview.contentSize.width);
 NSLog(@"zoomscale=%f", scrollview.zoomScale);

}
0 голосов
/ 27 марта 2011

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

A UIWebView содержит UIScrollView, который может быть предоставлен делегату.Затем при изменении масштаба вы (делегат) получаете обратный вызов scrollViewDidZoom:.

. Чтобы найти представление с прокруткой, вы можете получить коллекцию subviews из веб-представленияи итерации, чтобы увидеть, какой из них isKindOfClass:[UIScrollView class].

Теперь, UIWebView также соответствует UIScrollViewDelegate.Это может означать, что вы меняете реализацию веб-представления, и это может быть плохой идеей.Испытайте хорошо.

...