在 Lua for Android 中,将文本框在键盘上的位置移动。

我正在使用“Corona”SDK用Lua开发Android应用程序。

我遇到了一个问题,希望你们能帮我解决。我正在设计一个应用程序,其中有文本字段放置在屏幕底部,但我希望它们在被触摸后改变位置,以便键盘在弹出时不会覆盖它们。

因此,我创建了一个侦听器来执行代码,当其中任何一个被触摸时,它会更改2个字段的Y位置,但由于某种奇怪的原因,代码无法正常工作。然而,如果我将代码放在按钮事件侦听器中,它似乎可以正常工作。请参考我的代码:

----------------email textbox -------------

local textField = native.newTextField( display.contentCenterX, display.contentCenterY + 60, 200, 40 )
textField.placeholder = "Email"
textField.isEditable = true

 --function to handle events
local function touchListener( event )

      textField.y = display.contentCenterY - 100
      textField2.y = display.contentCenterY - 50

end

textField:addEventListener( "touch", touchListener )

提前感谢你的帮助。

点赞
用户2895078
用户2895078

如果我没记错的话,因为 textFields 是一个本地对象(而不是一个显示对象),它们不处理“触摸”事件。因此,您将需要使用“用户输入”事件来触发 textField 的移动。

以下是我过去用过的此类事件的监听器示例(不包括移动代码):

local function fctFieldListener(oEvent)
    local oTextField = oEvent.target

    if "began" == oEvent.phase then
        -- 如果在底部,将输入上移
    elseif "editing" == oEvent.phase then

    elseif "submitted" == oEvent.phase then
        native.setKeyboardFocus( nil )
    elseif "ended" == oEvent.phase then
        -- 如果调整了位置,将输入移回原来的位置
    end
end

您可以像这样将其添加到文本字段中:

oTextField:addEventListener( 'userInput', fctFieldListener )

另外,我强烈建议您将 native.newTextField 放入一个特定的显示组中,而不是移动 textField 本身,这会让事情变得更容易。

2014-07-27 21:37:55