문제

Cortana에서 사용되는 것과 유사한 SearchBox가 포함 된 Windows Phone 8.1 Silverlight / XAML UI를 만들고 싶습니다.텍스트 상자는 페이지 하단에 있어야하며 초점을 맞추면 키보드로 스크롤해야합니다.나머지 페이지의 나머지 부분은 전혀 움직이지 않아야합니다.Cortana UI는 정확히 그렇게하지만, 나는 내 앱에서 그 행동을 다시 만들 수 없었습니다.텍스트 상자가 초점을 맞출 때 My UI 컨테이너를 수동으로 크기를 조정 해야하는 솔루션을 찾았지만 다른 화면 해상도로 변경할 수 있고 키보드 크기를 예측하고 내용이 다시 제자리에 있기 전에 짧은 애니메이션을 생성해야합니다.따라서 키보드가 어떻게 슬라이드 할 때 페이지 내용이 스크롤되지 않도록 방지 할 수있는 방법은 무엇입니까?

도움이 되었습니까?

해결책

이 작업을 수행하는 것은 정말로 좋은 방법이 없습니다. Cortana는 시스템 UI이며 기존의 모든 앱 공간보다 큽니다. 앱의 경우 앱의 모든 UI가 전체 앱의 일부인 것으로 가정합니다. 소프트웨어 키보드가 표시되는 입력의 경우 컨텍스트가 손실되지 않도록 앱 콘텐츠가보기로 스크롤됩니다. 이것은 실제로 변경할 수없는 기본 동작입니다.

키보드 영역이 표시 / 숨어있는 경우에 액세스 할 수 있습니다 ( windows.ui.viewmanagement.InputPane.InputPaneShowing [HIDING] )을 알고 ocluded 사각형이 무엇인지 알 수 있습니다. 이 이벤트를 사용하면 UI가 기본 시각적 트리의 일부인 경우 앱이 스크롤됩니다.

시도 할 수있는 한 가지는 not 의 일부가 아닌 팝업 레이어에 해당 텍스트 영역을 넣는 것입니다 (비주얼 트리에 미친 듯이 의미가 있음을 의미). unparented 팝업은 주 UI 스크롤 동작에 참여하지 않습니다. 이렇게 한 경우 입력 창이 표시되거나 숨어있는 경우 듣기와 함께 당신이 원하는 것을 달성 할 수 있습니다.

다른 팁

이 작업을 수행하는 슈퍼 깨끗한 방법이 없지만 Silverlight에서도 여전히 작동하는 해결 방법이 있습니다.키보드가 열리면 rootApplicationFrame에서 translateTransform을 애니메이션합니다.따라서 요소에 초점을 맞추면 페이지의 LayoutUpdates를 구독하고 변환 값을 확인하십시오.

자세히 / 코드를 참조하십시오 : 키보드 오프셋을 결정하는 방법

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top