1

私は興味深い問題に直面しています。UIWebView 内に表示する Web サービスから取得した HTML データがあり、ユーザーがリンクをタップしたときに Safari でハイパーリンクを開きたいと考えています。

私が持っているコードは、Web ビュー内ですぐに表示されるリンクに対してうまく機能します。ビューをスクロールすると、表示領域の下にあるリンク (つまり、スクロールする必要があるリンク) をタップしてもまったく機能しません。

次のようなロジックを使用して、WebView のすべてのスクロールバーを無効にしていることに注意してください。

DescriptionWebView = new UIWebView(new RectangleF(0, separator.Frame.Bottom + 1, 320, 140));
        DescriptionWebView.DataDetectorTypes = UIDataDetectorType.All;
        DescriptionWebView.UserInteractionEnabled = true;
        DescriptionWebView.Delegate = new PlanDescriptionWebViewDelegate(this);


        foreach(UIView subview in DescriptionWebView.Subviews)
        {                   
                    if(subview is UIScrollView)
                        (subview as UIScrollView).ScrollEnabled = false;
        }   

そして、次のようにデリゲート内のロジックを使用して、コンテンツのサイズに基づいて WebView のサイズを変更しています。

 public override bool ShouldStartLoad(UIWebView webView, MonoTouch.Foundation.NSUrlRequest request, UIWebViewNavigationType navigationType)
                 {
                            NSUrl url = request.Url;
                            if(navigationType == UIWebViewNavigationType.Other)
                            {
                                      if(url.Scheme.ToString().Equals("ready"))
                                      {

                                                 float contentHeight = Convert.ToInt32(url.Host);
                                                 if(contentHeight < _infoView.DescriptionWebView.Frame.Height)
                                                            contentHeight = _infoView.DescriptionWebView.Frame.Height;
                                                 RectangleF scrollViewFrame = _infoView.ScrollView.Frame;
                                                 RectangleF descriptionViewFrame = _infoView.DescriptionWebView.Frame;
                                                 BeginInvokeOnMainThread(() => 
                                                 {
                                                            _infoView.DescriptionWebView.Frame = new RectangleF(descriptionViewFrame.X, descriptionViewFrame.Y, descriptionViewFrame.Width, contentHeight + 10);
                                                            //_infoView.ScrollView.ContentSize =  new SizeF(scrollViewFrame.Size.Width, contentHeight + scrollViewFrame.Y + scrollViewFrame.Height - descriptionViewFrame.Height);
                                                            _infoView.ScrollView.ContentSize = new SizeF(scrollViewFrame.Size.Width, contentHeight + scrollViewFrame.Height + 20 - descriptionViewFrame.Height);
                                                 });
                                                 return false;       
                                      }

                            } else if(navigationType == UIWebViewNavigationType.LinkClicked)
                            {
                                      UIApplication.SharedApplication.OpenUrl(url);
                                      return false;
                            }
                            return true;
                 }

私は完全に途方に暮れています。ビュー内の上部のリンクが機能し、スクロールする必要がある下部のリンクが機能しないのはなぜですか?

どんな助けでも大歓迎です。

4

0 に答える 0