MRTK3: Scrolling Views do not work with user input.
Describe the bug
A clear and concise description of what the bug is. Tested all of the available MS examples on using a Scrolling View with the MRTK3, yet none actually function with user input.
Valiated:
- Hero Panel in CanvasExamples
- VirtualizedScrollRectList - turning off the script that automatically moves the view
- Setting up a new ScrollRect with MRTK3 buttons
All the input seems to be captured by the content and none of the scroll behaviour makes it's way up to the scrollrect. Even using a Scrollbar does nothing.
To reproduce
Steps to reproduce the behavior:
- Open MRTK3 VirtualizedScrollRectList
- Disable the Virtualized Scroll Rect List Tester component on the Scroll View (to allow for manual input)
- TRY to scroll using far pointers or near hand interactions
- See error
Expected behavior
ScrollRects should be interactable with using input via near hands or far pointers, to scroll the view.
Your setup (please complete the following information)
- Unity Version [e.g. 2020.3.36f1]
- MRTK Version [e.g. v3.0] - latest
Target platform (please complete the following information)
- HoloLens 2
A bit of an update, after some tweaking of the controls I returned to testing and found it was possible to scroll in the view (quite a relief that it is even possible), however this still leaves it practically unusable. I suspect if you manage to grab an item by its shadow or something a few pixels wide of the buttons collider, you can get an interaction back to the panel behind it and actually scroll.
Ideally though, if a Selectable is Grabbed and the use attempts to drag, then this input should be fed through to the parent scrolling area (if there is one), so that scrolling is possible wherever you drag in a Scrollable area.
I have a video from Simon if anyone on the MRTK team needs to see it. Just let me know over Teams if so.
@SimonDarksideJ, Scrolling is not yet implemented for this preview release. I've been working on it for the past few weeks, stay tuned!
There's a reason this is still in preview 😉
Tracking this work in #10795 !
Closing as duplicated from the PR. I'll be posting additional updates over on the PR page.
@srinjoym can you look into Finn's PR and see what it'll take to bring this into GA
Tested out Finn's draft PR today. The implementation adds a Scrollable script to allow interactors to move ScrollRect's. The Scrollable script inherits from PressableButton and as far as I can tell makes the whole scroll area a button. The Scrollable script listens for touch events on the button and calculates the scroll delta frame to frame. This works pretty well for scrolling with both poke and far interactors.
There are a couple of issues right now:
- Far interactors are not able to click buttons inside the
ScrollRect. Not sure if there's a way to circumvent this, likely due to the nested buttons interfering with each other. - Trying to poke scroll a list causes the inner buttons to get clicked. We should try to disable the inner button click events if we detect an active scroll.
MRTK 2 had both poke scrolling and bubble up ray scrolling. The implementation wasn't ideal either as the inner buttons still got clicked when trying to scroll
Based on the investigation above, I'd say we need about 2 weeks to either fix this implementation or prototype new scroll interactions. I'm moving this task back to planned
An experimental feature has been added for this.
- https://github.com/microsoft/MixedRealityToolkit-Unity/pull/11642