Type Function Library widget.* Return value Number Revision Release 2024.3703 Keywords widget, scroll view, ScrollViewWidget, takeFocus See also widget.newScrollView() ScrollViewWidget
If you have an object with a touch listener inside a scroll view such as a ButtonWidget, you should call this method within the "moved"
phase of that object's touch listener and pass the touch event's event
table as the sole parameter of this method. This will give focus back to the scroll view, enabling it to continue to scroll.
object:takeFocus( event )
Table. The event
table from the object's touch listener function.
local widget = require( "widget" ) local scrollView = widget.newScrollView { top = 100, left = 10, width = 300, height = 400, scrollWidth = 600, scrollHeight = 800, horizontalScrollDisabled = true } -- The touch listener function for the button (created below) local function handleButtonEvent( event ) local phase = event.phase if ( phase == "moved" ) then local dy = math.abs( ( event.y - event.yStart ) ) -- If the touch on the button has moved more than 10 pixels, -- pass focus back to the scroll view so it can continue scrolling if ( dy > 10 ) then scrollView:takeFocus( event ) end end return true end local button1 = widget.newButton { left = 100, top = 200, id = "button1", label = "Default", onEvent = handleButtonEvent } scrollView:insert( button1 )