2015-10-10 1 views
0

Я динамически создавал textField с использованием короны, но я не могу добавлять события к этим объектам, потому что мне нужно хранить информацию о textField в таблице.Как создать динамически объекты (textFields из родной библиотеки) и добавить к ним событие

Я использовал это в C#, используя только одно событие, и я попросил фокус текстового поля, но в этом случае я не знаю, что делать. Фокус свойства для 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

Свойство фокус для TextField не существует (вы можете установить фокус, но вы не можете просить государства).

Уверенный, вы можете. Существует способ, чтобы узнать, какой TextField имеет фокус .. Прежде всего позвольте мне добавить display.newText() для тестирования .. поэтому в верхней части перед вашим eventHandlers

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

теперь добавить свойство ID для каждого из TextFields, поэтому после создания 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 ... поэтому теперь я покажу идентификатор текстового поля с фокусом.

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

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). –

+0

Я знаю, я надеялся, что смогу помочь, получив больше информации, затем я могу обновить свой ответ или удалить его в противном случае, поскольку вы упомянули, что у меня не было достаточной репутации для комментариев .. – Muganza

+0

Я очень ценю вашу помощь Muganza, это помогает мне много. благодаря –