2017-10-31 5 views
2

스택 레이아웃과 스크롤 뷰를 사용하여 주석 목록을 표시하는 화면이 있습니다. 사용자는 하나 이상의 댓글을 추가하고 제출을 클릭하면 Xamarin Forms (Android 및 iOS 앱)의 스크롤보기 끝에 댓글이 하나 더 추가됩니다. 이 목록을 스크롤하여 최신 표시 설명 요소를 표시해야합니다. 이를 위해 아래 코드 줄을 사용했지만 마지막 요소까지 두 번째 마지막 요소까지 스크롤하지 않습니다. 나는 IOS와 안드로이드 모두에서 그것을 관찰했다.Xamarin Forms - ScrollView - ScrollToAsync가 예상대로 작동하지 않음

await scrollView.ScrollToAsync(stkMain, ScrollToPosition.End, true); 

아래 이미지는 더 많은 아이디어를 제공합니다. I가 끝날 때까지 스크롤 코드 위에서 사용 왔지만

그림과 같이

enter image description here

는 스택 레이아웃 3 화면에 표시되지 않음. 스택 레이아웃 3을보기 위해 스크롤보기를 위로 스크롤해야합니다.

예상되는 동작 - 화면에 표시된 마지막 요소까지 스크롤 할 때까지 스크롤해야합니다. 내가 올바르게하고 있지 않다면 친절히 제안하십시오.

디버그 모드에서 scrolToAsync 메서드를 사용하여 선에서 점을 만들 때 내가 언급하는 것을 잊어 버리는 것이 있습니다. 브레이크 포인트가 그 라인을 치면 F5를 누르면 마지막 요소가 보입니다. 보고 싶지만 일어난다는 것이 놀랍습니다.

+0

'stkMain'의 마지막 자식을 가져 와서 그것을 스크롤하려 했습니까? –

+0

디버그 모드에서 scrolToAsync 메서드를 사용하는 선에서 점을 만들 때 내가 언급하는 것을 잊어 버리는 것이 있습니다. 브레이크 포인트가 그 라인을 치면 F5를 누르면 마지막 요소가 보입니다. 나는 그것을보고 놀랐지만 일어난다. –

+1

놀랍지도 않습니다. 렌더링 방법은 종종 비동기 적이며 코드 숨김은 렌더링 된 화면에서 요소를 사용할 수 있기 전에 실행될 수 있습니다. 나는 이것이 최선의 해결책이 아니라는 것을 알고 있지만 때때로 시각적 인 상호 작용을하기 전에 300ms의 지연을 강요하기도했습니다. (어떤 종류의 나쁜 영어라도 유감스럽게 생각해도, 나는 아직 = D를 배우고있다) –

답변

1

새 메모 요소 추가 작업이 완료된 후 약간의 시간을 추가 한 다음 stkMain의 마지막 자식으로 스크롤하십시오. 이 같은

뭔가 :

var lastChild = stkMain.Children.LastOrDefault(); 
if(lastChild != null) 
    scrollView.ScrollToAsync(lastChild, ScrollToPosition.MakeVisible, true); 
+0

다시 시도해보고 다시 답장을 보내십시오. –

1

당신이

scrollView.ScrollToAsync 시도 단지 아래로 스크롤하려면 (stkMain.Height를, TRUE);

+0

나는 이것을했지만 완벽하게 작동하지는 않는다. :( –

+0

stkMain.Height 어쩌면 ..에서 뭔가를 공제 –