cocos-lua输入框禁止输入非数字字符

 viewNode.inputUserID:setInputMode(cc.EDITBOX_INPUT_MODE_NUMERIC)   --设置editBox输入模式是数字,但还是可以输入,.+#等字符
 viewNode.inputUserID:setMaxLength(MAX_USERID_LEN)
 viewNode.inputUserID:registerScriptEditBoxHandler(handler(self, self.onInputUserIDChanged)) --在onInputUserIDChanged中做处理
function CLASS:onInputUserIDChanged(strEventName, pSender)
    if strEventName ~= "changed" then return end
    
    --only input for number
    if self._viewNode and self._viewNode.inputUserID then
        local str = self._viewNode.inputUserID:getString()
        local astr = string.match(str, "%d+")
        self._viewNode.inputUserID:setString(astr)
        print(astr)
    end
end

editBox编辑框绑定事件registerScriptEditBoxHandler:

--定义编辑框CCEditBox的回调事件
local function editBoxTextEventHandle(strEventName,pSender)
        local edit = tolua.cast(pSender,"CCEditBox") 
        local strFmt 
        if strEventName == "began" then --编辑框开始编辑时调用
            strFmt = string.format("editBox %p DidBegin !", edit)
            print(strFmt)
        elseif strEventName == "ended" then --编辑框完成时调用
            strFmt = string.format("editBox %p DidEnd !", edit)
            print(strFmt)
        elseif strEventName == "return" then --编辑框return时调用
            strFmt = string.format("editBox %p was returned !",edit)
            if edit == EditName then --判断是哪个编辑框,在多个编辑框同时绑定此函数时 需判断时哪个编辑框
-- 当编辑框EditName 按下return 时到此处 elseif edit == EditPassword then -- 当编辑框EditPassword 按下return 时到此处 elseif edit == EditEmail then --当编辑框EditEmail 按下return 时到此处 end elseif strEventName == "changed" then - -编辑框内容改变时调用 strFmt = string.format("editBox %p TextChanged, text: %s ", edit, edit:getText()) print(strFmt) end end local editBoxSize = CCSizeMake(120, 20) --设置编辑框尺寸 EditName = CCEditBox:create(editBoxSize, CCScale9Sprite:create("green_edit.png")) --CCEditBox编辑框绑定事件editBoxTextEventHandle EditName:registerScriptEditBoxHandler(editBoxTextEventHandle)
--editBox编辑框编辑模式 setInputMode
cc.EDITBOX_INPUT_MODE_ANY = 0
cc.EDITBOX_INPUT_MODE_EMAILADDR = 1
cc.EDITBOX_INPUT_MODE_NUMERIC = 2
cc.EDITBOX_INPUT_MODE_PHONENUMBER = 3
cc.EDITBOX_INPUT_MODE_URL = 4
cc.EDITBOX_INPUT_MODE_DECIMAL = 5
cc.EDITBOX_INPUT_MODE_SINGLELINE = 6

 string.match的用法:


参考:http://www.360doc.com/content/16/0421/18/478627_552643702.shtml


猜你喜欢

转载自blog.csdn.net/u014269285/article/details/80074114