如何创建动态对象(来自本机库的textFields),并向其添加事件

时间:2015-10-10 04:03:08

标签: android ios lua corona

我使用电晕动态创建了textField,但我无法向这些对象添加事件,因为我需要将textField的信息存储在表格中。

我曾经在c#中只使用一个事件来做这个,我问了textBox的焦点,但是在这种情况下我不知道该怎么做。 textField的属性焦点不存在(您可以设置焦点,但不能要求状态)。

另一方面,我尝试创建一个包含函数的表,并将这些函数传递给textField的addEventListener,但它确实无效。

我很感激任何解决这个问题的建议,谢谢!!!!

local widget=require("widget")
local native=require("native")
local listTextFields={}

local positionY=display.contentCenterY

--Handle for any textField

local function textFieldHandle( event )

if ( event.phase == "began" ) then


elseif ( event.phase == "ended" or event.phase == "submitted" ) then

    --???

elseif ( event.phase == "editing" ) then

    --???
end

end

--this is the button's event
local function buttonEvent_1 (event)

listTextFields[#listTextField+1]=native.newTextField{
x=display.contentCenterX,
y=positionY,
width=100,
height=50
} 
positionY=positionY+70

--This is the main problem


lisTextFields[#listTextFields]:addEventListener("userInput",textFieldHandle)

--But in this case I don't now how to build the handle for the textField,  cause I don't now what textField have the focus.
end


-- Button
local propertiesButton = 
{
left = display.contentCenterX,
top = display.contentCenterY - display.contentHeight/2,
width = 80,
height = 80 ,
label= "Add",
defaultFile = "defaultButton.png",
overFile = "overButton.png",
onPress=buttonEvent_1

}
button1 = widget.newButton(propertiesButton)

1 个答案:

答案 0 :(得分:0)

  

textField的属性焦点不存在(您可以设置   专注,但你不能要求国家。)

当然可以。 有一种方法可以知道哪个textField具有焦点.. 首先让我添加一个display.newText()进行测试..所以在eventHandlers之前的顶部

local test = display.newText( " ", 100, 100, nil, 20 )

现在为每个textField添加一个id属性,所以在创建textField后我们添加..

listTextFields[#listTextField+1]=native.newTextField{
x=display.contentCenterX,
y=positionY,
width=100,
height=50
} 

listTextFields[#listTextFields].id = #listTextFields

确定哪个textField具有焦点..我们可以使用event.phase =="开始"在eventHandler里面..我们可以通过event.target访问textField ...所以现在我将显示带焦点的textField的id ..

local function textFieldHandle( event )
if ( event.phase == "began" ) then
test.text = "The Focus on the textField # " .. event.target.id
end
end