문제

ive는 4.7.0에 BlackBerry 4.6.0 응용 프로그램을 폭풍으로 포팅했습니다. 모두 제가 제어하려는 터치 이벤트와는 별도로 잘 작동합니다. 아래의 방법에서 터치 이벤트를 가두는 것처럼 예상대로 수행하지만 Touchevent의 논리가 실행되고 메뉴를 반환 한 후 (메뉴 버튼을 통해 활성화 됨) 문제는 항상 표시됩니다. 거짓, true 및 super.touchevent (메시지)를 반환하려고 시도했지만 여전히 나타납니다.

터치 이벤트를 포획 한 후 메뉴가 나타나는 것을 방지 할 수있는 방법에 대한 아이디어가 있습니까?

protected boolean touchEvent(TouchEvent message)
{
     if (message.getEvent() == TouchEvent.CLICK)
     {
        //My code here
     }
}

당신의 생각은 대단히 감사합니다

도움이 되었습니까?

해결책

Haagmm의 답변을 명확히하기 위해 :

TouchEvent.click이 응용 프로그램으로 전송 된 후 NavigationClick 이벤트도 전송됩니다. 이는 호환성의 이유를위한 것이므로 ButtonFields와 같은 것들이 Touchevents에 응답하기 위해 앱이 명시 적으로 작성되지 않은 경우에도 터치 스크린 장치에서 작동합니다.

앱의 필드에서 NavigationClick 이벤트가 소비되지 않으면 (Return True) 컨텍스트 메뉴가 표시됩니다.

버튼 필드를 클릭 할 때이 동작이 보이면 기본적으로 버튼 필드가 클릭 이벤트를 소비하지 않는다는 설명입니다. 다음과 같은 스타일 비트 세트로 항상 버튼 필드를 구성하는 것이 좋습니다.

ButtonField myButtonField = 
    new ButtonField( ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY );

Haagmm의 코드는 하나의 솔루션이지만 더 나은 아이디어는 T 이렇게하면 BlackBerry Tour와 같은 트랙볼 장치는 여전히 응용 프로그램을 사용할 수 있습니다.

다른 팁

화면을 "클릭"하거나 SIM에서 마우스를 왼쪽 클릭하면 4.6 장치에서 트랙볼을 클릭 한 경우와 비슷한 컨텍스트 메뉴가 트리거됩니다.

당신은 당신이 t

 protected boolean navigationClick(int status, int time) { return true; }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top