Corona sdk - native.newTextField - 失去焦点

我想要做的是,当我创建一个native.newTextField时,将isSecure选项设置为false,将placeholder设置为“输入密码”

每当用户开始输入时,将textfield更改为isSecure = true,以显示*符号。 使用我的方法时,我的textfield在第一个字母后失去焦点。

以下是我的代码:

local function fieldHandler( event )
    if ( "began" == event.phase ) then
        --这是“键盘已出现”事件
        --在某些情况下,您可能希望调整接口,以便在出现键盘时进行调整。
    elseif ( "ended" == event.phase ) then
        --当用户停止编辑字段时调用此事件:例如,当他们触摸不同的字段时
        if(event.target.id == "password" and event.target.text == "")then
            event.target.isSecure = false
            passwordField.placeholder = "输入密码"
        end

    elseif ( "editing" == event.phase ) then
        if(event.target.id == "password" and string.len(event.target.text) >0 ) then
            event.target.isSecure = true
            --native.setKeyboardFocus( event.target )
        end
    elseif ( "submitted" == event.phase ) then

        --隐藏键盘
        native.setKeyboardFocus( nil )
    end

--scene:show --Did

        local passwordField = native.newTextField( _CX - fieldWidth/2, passwordFieldBg.y, fieldWidth, 40 )
    passwordField.id = "password"
    passwordField:addEventListener( "userInput", fieldHandler )
    group:insert( passwordField)
    passwordField.hasBackground = false
    passwordField.anchorX = 0
    passwordField.placeholder = "输入密码"
    passwordField.autocorrectionType = "UITextAutocorrectionTypeNo"
    passwordField.isSecure = false
    passwordField.font =  native.newFont( gM.fontDin )
    passwordField:resizeFontToFitHeight()

请帮我解决这个问题,或者提供另一种方法。

谢谢,

版本2016.2883(2016.5.17)

点赞
用户6312494
用户6312494

我认为没必要改变 isSecure 的值,但你可以将其移动到 began 阶段:

如果 ( "began" == event.phase ) then
    -- 这是“键盘已出现”事件
    -- 在某些情况下,当键盘出现时,您可能需要调整界面。
    如果 (event.target.id == "password") then
        event.target.isSecure = true
2016-06-21 00:03:40