2011-12-22 3 views
2

저는 Scott Hanselman이 만든 MobileViewEngines describe here과 브라우저 데이터베이스 인 51Degrees.mobi을 사용하여 모바일 및 데스크톱 브라우저에서 서로 다른보기를 렌더링하고 있습니다.51degrees.mobi를 사용하여 터치 스크린 모바일 장치를 감지하는 방법

이제 중간면을 추가하고 싶습니다. 고급형 모바일 브라우저 (사과, 안드로이드, Windows 전화, 일부 블랙 베리 등). 나는이 카테고리를 차별화하기 위해 터치 스크린을 사용하려고 생각하고있다.

그래서, 두 가지 질문 :

  1. 어떻게 51Degrees.mobi를 사용하여 터치 스크린을 감지합니까?
  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는 이전 기능과 다른 기능 이름을 사용하는 자체 장치 데이터를 도입합니다. 당신은 그것에 대해 mroe을 읽을 수 있습니다 51Degrees.mobi

+0

어떤 안드로이드 장치에서 작동하지 않습니다, 터치 스크린이 장착 된 Windows 7 노트북에서는 작동하지 않습니다. ( –

+0

이 속성은 Request.Browser [ "IsTouchScreen"]가 아니며 지금은 ""HasTouchScreen ""이며 라이트 프리 버전에서는 제공되지 않습니다. –

1

대부분의 터치 감지는 자바 스크립트로 수행됩니다. 또는 CSS.

Modernizr은 사용할 좋은 라이브러리이며 기본적으로 MVC3이 포함되어 있다고 생각합니다.

당신은 정말 이런 식으로 뭔가는 것 :

감지 예를 들어
html.touch div { 
    width: 480px; 
} 

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

, 당신은 너무 MVC4로 볼 수 어쩌면 this

참조? 그들의 주요 요점 중 하나는 더 나은 모바일 지원입니다. Read here. 아마도 그것은 기본적으로 좋은 터치 감지를 위해 뭔가가 추가되었습니다.

+0

거기에 많은 자바 스크립트 가능성 http://stackoverflow.com/questions/3974827/detecting-touch-screen-devices-with-javascript –

관련 문제