2

ここで Scott Hanselman が説明した MobileViewEnginesと、51Degrees.mobiブラウザー データベースを使用して、モバイル ブラウザーとデスクトップ ブラウザーのさまざまなビューをレンダリングしています。

ここで中間点を追加したいと思います。ハイエンド モバイル ブラウザ (Apple、Android、Windows Phone、一部の Blackberry など) 向け。このカテゴリーを差別化するために、タッチ スクリーンを使用することを考えています。

だから、2つの質問:

  1. 51Degrees.mobi を使用してタッチ スクリーンを検出するにはどうすればよいですか?
  2. タッチ入力は良い方法ですか?(デスクトップ、ハイエンド、ローエンドのカテゴリが必要です)
4

2 に答える 2

2

私は51Degrees.mobiで働いています。デバイスがタッチスクリーンであるかどうかを検出するには、Request.Browser["IsTouchScreen"]

ただし、MVC内でそれをエレガントに使用するには、もう少し複雑です。MobileCapableViewEngineのソースを見ると、モバイルエンジンをコピーし、FindViewメソッドを変更することで、新しいエンジンを作成できるようです。

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName,
                                              string masterName, bool useCache)
    {
        string overrideViewName = controllerContext.HttpContext.Request.Browser["IsTouchScreen"] == "True"
                                      ? viewName + ".Touch"
                                      : viewName;
        ViewEngineResult result = NewFindView(controllerContext, overrideViewName, masterName, useCache);

        // If we're looking for a Touch view and couldn't find it try again without modifying the viewname
        if (overrideViewName.Contains(".Touch") && (result == null || result.View == null))
        {
            result = NewFindView(controllerContext, viewName, masterName, useCache);
        }
        return result;
    }

次に、この新しいエンジンをモバイルエンジンのブートストラッパーに追加して、タッチビューを作成する必要があります。

ただし、これを行う前に、これがデバイスを分離する方法であるかどうかを検討する必要があります。たとえば、Nokia X3-02の画面は比較的小さいですが、iPadのようなものと同じビューで表示されます。おそらく、デバイスのOSの使用を検討する必要があります。Request.Browser["PlatformName"]

最後に、51Degrees.mobi Foundationバージョン2は、以前のものとは異なる機能名を使用する独自のデバイスデータを導入しています。あなたは51Degrees.mobiでそれについてmroeを読むことができます

于 2011-12-22T11:22:52.233 に答える
1

ほとんどのタッチ検出は Javascript で行われます。あるいは、CSS.

Modernizrは使用するのに適したライブラリであり、デフォルトで MVC3 が付属していると思います。

あなたは次のようになります:

html.touch div {
    width: 480px;
}

html.no-touch div {
    width: auto;
}

検出例はこちら

多分あなたもMVC4を調べることができますか?彼らの主なポイントの 1 つは、より優れたモバイル サポートです。ここを読んでください。たぶん、デフォルトで適切なタッチ検出のために何かが追加されています

于 2011-12-22T09:09:31.943 に答える