我正在使用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 )
我事先感谢你的帮助。
答案 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本身,使事情变得更容易。