在Lua for Android上的键盘上移动文本字段位置

时间:2014-07-27 19:35:16

标签: android lua corona

我正在使用SDK" Corona"在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 )

我事先感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

如果我是正确的,因为textFields是一个原生对象(而不是显示对象),他们不会处理"触摸"事件。 因此,您需要使用" userInput"触发textField移动的事件。

以下是我过去用于此案例的侦听器示例(没有移动代码):

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

    if "began" == oEvent.phase then
        -- Move the input up if at the bottom
    elseif "editing" == oEvent.phase then

    elseif "submitted" == oEvent.phase then
        native.setKeyboardFocus( nil )
    elseif "ended" == oEvent.phase then
        -- Move the input back at his original place if adjusted
    end
end

然后将其添加到文本字段中:

oTextField:addEventListener( 'userInput', fctFieldListener )

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