cocos2dx - lua 本身的 ccui.EditBox 是不能换行的
需求:
一个玩家留言的功能,就是玩家编辑一大段字符串,传送给服务器,服务器上传这段文字到后台管理系统。
思路:
EditBox 上层UI如果没有拦截点击事件,可以盖一个图片挡住EditBox ,也不会影响输入框的功能的
那么我是不是可以用一个文本节点显示当前输入的内容,实现文字换行功能
-- 创建 EeditBox
local node = display.newSprite(...)
local editeNotice = ccui.EditBox:create()
...
editeNotice:addTo(node, -1)
-- 创建换行文本
local normalStr = "请输入问题,可留下联系方式,以便客服更快联系您"
local defLab = display.newTTFLabel({text = normalStr, size = 24, color = MColor.f1, dimensions = cc.size(660, 350)})
defLab:addTo(node)
-- 给EditBox 注册回调函数
local handler = function(event, pSender)
local edit = tolua.cast(pSender,"ccui.EditBox")
if event == "began" then
defStr:setString("")
end
if event == "changed" then
local str = editeNotice:getText()
defStr:setString(str)
end
if event == "return" then
local str = editeNotice:getText()
local tmpStr = string.gsub(str, " ", "")
if tmpStr == "" then
defLab:setString(normalStr)
else
defLab:setString(str)
end
end
end
editeNotice:registerScriptEditBoxHandler(handler)
结果
在pc上完成需求