2

次の環境で動作するアプリケーションがあります。

  • モノタッチ2.1
  • モノデベロップ 2.4.2
  • macOS 10.6.8
  • iOS SDK 4.3

MonoDevelop 2.8.8.4 の下で iOS 5.0/5.1 および Monotouch 5.2.10 に移行された同じアプリケーションには、次の問題があります。

コードは次のとおりです:(明らかに、Monotouch 2.1 でも同じです)

public void ScrollToTop (object sender, EventArgs evt)
{
    webView.EvaluateJavascript("window.scrollTo(0,0)");
}

どうすればいいですか?

解決済み (Jonathan.Peppers の助けを借りて):

public void ScrollToTop (object sender, EventArgs evt)
{
    if((UIDevice.CurrentDevice.CheckVersion(5, 0)){                 
                System.Drawing.PointF p = new System.Drawing.PointF(0, 0);
                webView.ScrollView.SetContentOffset(p,true);
            }
            else{
                webView.EvaluateJavascript("window.scrollTo(0,0)");                 
            }
}

4.3 webView.ScrollView.SetContentOffset でアプリケーションがクラッシュするため、私はそのようにしました。

4

2 に答える 2

2

これを試して:

string error = webView.EvaluateJavascript("try { window.scrollTo(0,0); } catch (e) { return e.message; }");

(私のコードを再確認してください)

より良いエラーメッセージが表示されるはずです。返された文字列の値を教えてください。

問題は MonoTouch ではなく、おそらく iOS5 ではないでしょうか? Safari は、iOS5、新しい JavaScript エンジンなどで大幅な変更が加えられました。

于 2012-04-10T12:04:45.237 に答える
2

re-entrantUIWebViewではないことに注意してください。iOS リリース間でページの読み込み方法 (または単にタイミング) が変わると、これが問題になる可能性があります。

これを回避するには、ロードが完了するまで、または呼び出されるまで、どの インスタンスにもコールバックしないようにしてください。UIWebViewLoadFinishedLoadError

これで問題が解決しない場合は、問題を再現する小さな自己完結型のテスト ケースを作成し、http://bugzilla.xamarin.comのバグ レポートに添付してください。

于 2012-04-10T12:57:55.417 に答える