我使用电晕动态创建了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)
答案 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