这个用cocostudio 做的控件怎么弹出软键盘
您好,请问您使用的是否是win32平台?如果是Win32则不会弹出虚拟键盘,因为win32不带虚拟的键盘,请直接输入。感谢您对cocos引擎的支持。
请问楼上的版主,如何在点击UITextField输入框后,显示软键盘只显示半屏,而且UITextField输入框能(其实是整个游戏界面)自动向上移!
Layer自动上移应该需要自己做吧,监听键盘的弹出和收起来实现,软键盘本身的大小cocos2dx应该控制不了。
请问如何监听键盘的弹出和收起?
如果想手动抬起键盘的话,TextField -> attchWithIME 这样就行了。抬起屏幕的话 TextField 自动做不到,需要手动改,要么你上移动UI的Node 要么你就直接调Java函数,在Java处理。, EditBox会自动做处理的
win32下
那怎么连光标都没有, 点击上去连提示文字也不会自动消失
如果用editbox的话 又会跳出来很丑的框
请问大家制作输入框时是怎么做的,如果用textfield这个控件,没有光标,这个自己封装可以,还要自己写函数让输入框上移,感觉这个控件不太好用;editbox这个控件,调用系统自己的输入框,还跑到了手机顶端,求解啊,大家是怎么做的输入框啊?
我这边最终是 自己写一个输入框的控件解决的
你自己写的输入框,请问你是怎么写的,能否给个思路?或代码给看一下,本人新手好多都不懂
很久之前写的 cocos-js3.6的 不知道还能不能跑
/**
- 自定义的输入框
/
EditBox = cc.Node.extend({
hit:/*
* 提示文字
/
null,
ctor: function (p, placeholder, fontName, fontSize) {
this._super();
p.addChild(this);
this.initBackGround();
this.initTextField(placeholder, fontName, fontSize);
this.initLight();
this.addListener();
},
initBackGround:/*
* 初始化背景
/
function(){
this.backGround = new cc.Sprite(res_public.login_edit);
this.backGround.setAnchorPoint(0, 0.5);
this.addChild(this.backGround);
},
initTextField:/*
* 初始化输入框
*/
function(placeholder, fontName, fontSize){
this.tf = new ccui.TextField(placeholder, fontName, fontSize);
this.tf.setAnchorPoint(0, 0.5);
this.tf.setMaxLengthEnabled(true);
// 屏蔽默认点击,使用自定义点击
this.tf.setTouchEnabled(false);
this.tf.fontName = "Marker Felt";
this.tf.fontSize = 30;
this.tf.setTextColor(cc.color(0, 0, 0, 255));
this.addChild(this.tf);
},
initLight:/**
* 初始化光标
*/
function(){
this.light = new cc.LabelTTF("|",gg.fontName, 25);
this.light.setColor(cc.color(0,0,0));
this.light.setAnchorPoint(0, 0.5);
this.addChild(this.light);
var seq = cc.sequence(cc.fadeIn(0.3),cc.delayTime(0.3),cc.fadeOut(0.3));
var forever = cc.repeatForever(seq);
this.light.runAction(forever);
this.hiddenLight();
},
setMaxLength:/**
* 设置最大长度
*
* @param length
*/
function(length){
this.tf.setMaxLength(length);
},
setHit:/**
* 设置提示
*
* @param strHit
*/
function(strHit){
this.hit = strHit;
this.tf.setPlaceHolder(this.hit)
},
showHit:/**
* 展示提示
*/
function(){
this.tf.setPlaceHolder(this.hit)
},
hiddenHit:/**
* 隐藏提示
*/
function(){
this.tf.setPlaceHolder("")
},
setPasswordEnabled:/**
* 是否作为密码展示
*
* @param enable
*/
function(enable){
this.tf.setPasswordEnabled(enable);
},
setString:/**
* 设置文字
*
* @param str
*/
function(str){
this.tf.setString(str);
},
getString:function(){
return this.tf.getString();
},
setPos:/**
* 设置位置
*
* @param width
* @param height
*/
function(width, height){
this.x = width;
this.y = height;
},
addListener:function(){
// TextField 事件
this.tf.addEventListener(this.textFieldEvent, this);
// 点击事件
cc.eventManager.addListener(cc.EventListener.create({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
onTouchBegan: this.onTouchBegan.bind(this)
}), this.backGround);
},
onTouchBegan:function(touch, event){
var pos = cc.p(touch.getLocationX(),touch.getLocationY());
var target = event.getCurrentTarget();
if(cc.rectContainsPoint(target.getBoundingBoxToWorld(),pos)){
setTimeout(function(){
cc.log("获取焦点");
this.tf.getVirtualRenderer().attachWithIME();
}.bind(this), 0);
this.showLight();
return true;
} else {
setTimeout(function(){
cc.log("失去焦点");
this.tf.getVirtualRenderer().detachWithIME();
this.showHit();
}.bind(this), 0);
this.hiddenLight();
return false;
}
},
showLight:/**
* 出现光标闪烁
*/
function(){
this.light.setVisible(true);
var sv = this.tf.getString();
if(!!sv && sv.length > 0){
this.light.setPositionX(this.tf.width - this.light.width * 0.5 + 1);
} else {
// 存在焦点
this.light.setPositionX(this.light.width * 0.5);
this.hiddenHit();
}
},
hiddenLight:/**
* 隐藏光标
*/
function(){
this.light.setVisible(false);
},
textFieldEvent:/**
* 各种事件
*/
function(textField, type){
switch (type) {
case ccui.TextField.EVENT_ATTACH_WITH_IME:
cc.log("attach with IME");
this.showLight();
break;
case ccui.TextField.EVENT_DETACH_WITH_IME:
cc.log("detach with IME");
this.hiddenLight();
break;
case ccui.TextField.EVENT_INSERT_TEXT:
cc.log("insert words");
this.showLight();
break;
case ccui.TextField.EVENT_DELETE_BACKWARD:
cc.log("delete word");
this.showLight();
break;
default:
break;
}
cc.log(type);
}
})