文字输入

文本框控件CCTextFieldTTF:

const char* getString(void);    获取当前字符串
bool attachWithIME();    激活输入法
bool detachWithIME();    取消激活输入法

例如:

1 CCTextFieldTF text = CCTextFieldTTF::textFieldWithPlaceHodler("Input Your name...", "Arial", 20);
2 text->setPosition(ccp(winSize.width/2, winSize.height/2 + 40));
3 this->addChild(text);
4 text->attachWithIME();

在创建场景时,如果场景里面有文本框,那么会默认弹出键盘,如果想不自动弹出文本框,而是等用户轻触文本框再弹出键盘,实现方法如下:

//在文本框上增加一个按钮即可

1 CCMenuItem*  tapItem = CCMenuItemFont::create("       ", this, menu_selector(StartScene::textFiledPressed));
2 tapItem->setPosition(cp(winSize.width/2, winSize.height/2 + 40));
3 menu->addChild(tapItem, 1);
4 //并且将显示输入法放到响应函数中
5 void StartScene::textFieldPressed(cocos2d::CCObject *sender)
6 {
7 text->attachWithIME();
8 }

CCTextFieldTTF预留了一个代理CCTextFeildDelegate协议来通知相关事件,这个代理协议实际上是输入法代理协议的简化封装。

//即将激活输入法,如果不想激活,应该返回true

virtual bool onTextFeildAttachWithIME(CCTextFieldTTF *sender);

//即将取消输入法,如果不想取消,应该返回true

virtual bool onTextFieldDetachWithIME(CCTextFieldTTF *sender);

//即将插入一段文字,如果不想插入,应该返回true

virtual bool onTextFieldInsertText(CCTextFieldTTF *sender, const char * text, int nLen);

//即将删除一段文字,如果不想删除,应该返回true

virtual bool onTextFieldDeleteBackward(CCTextFieldTTF *sender, const char *delText, int nLen);

//如果不希望绘制这个输入法,返回true

virtual bool onDraw(CCTextFieldTTF *sender);

弹出键盘后,如果文本框在场景的下方,键盘可能会挡住文本框,所以进行以下处理:

 1 bool StartScene::onTextFieldAttachWithIME(cocos2d::CCTextFieldTTF *sender)
 2 {
 3     this->setPosition(ccp(0, 100));
 4     return false;
 5 }
 6 bool StartScene::onTextFieldDetachWithIME(cocos2d::CCTextFieldTTF *sender)
 7 {
 8     this->setPosition(ccp(0, 0));
 9     return false;
10 }
11 //最后,设置文本框和协议响应方
12 text->setDelegate(this);
时间: 2025-01-06 19:17:11

文字输入的相关文章

ex6.栈的应用:文字输入模拟(有错误未解决)

#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #include<stdio.h> #include<stdlib.h> typedef char SElemType; typedef struct{ SElemType *base,*top; int stacksize; }SqStack; int InitStack(SqStack &S) { S.base = (SElemType*)malloc(sizeo

语音输入和文字输入动画切换

随着语音的快速普及,很多应用都开始增加语音输入功能.下面是一个简单的语音和文字输入的动画切换: 布局文件: <ViewFlipper android:id="@+id/viewFlipper1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" &g

动画语音输入和文字输入开关

随着演讲的迅速普及,很多应用都开始添加语音输入.下面是一个简单的语音和文字输入的动画切换: 布局文件: <ViewFlipper android:id="@+id/viewFlipper1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" >

Android:EditText限制文字输入

Android的编辑框控件EditText在平常编程时会经常用到,有时候会对编辑框增加某些限制,如限制只能输入数字,最大输入的文字个数,不能输入一些非法字符等,这些需求有些可以使用android控件属性直接写在布局xml文件里,比如android:numeric="integer"(只允许输入数字): 对于一些需求,如非法字符限制(例如不允许输入#号,如果输入了#给出错误提示),做成动态判断更方便一些,而且容易扩展: 在Android里使用TextWatcher接口可以很方便的对Edi

使用JQuery统计input和textarea文字输入数量代码

本文主要介绍了jQuery实现统计输入文字个数的方法,需要的朋友可以参考下. HTML部分: <input type="text" value="我是输入的文字" maxlength="10" id="detail1"/> <p><span id="detail1_num">0</span>/<span>10</span></p&

Appium和Robotium在文字输入上的区别

近来在学习研究移动平台 自动化测试时发现Appium和Robotium在对文本框进行输入时有一定的区别: Appium在输入文字时需要调用系统键盘 Robotium在输入文字是根本不需要调出键盘,文字很快速的就输入完成,感觉不是输入的,而是Copy&Paste 我个人认为造成这种区别的原因应该如下(源码分析验证:TBD): Appium是基于UIAutomator框架实现的.Appium测试进程与目标应用进程是分开的,所以Appium不能直接访问目标应用的各种element属性进行copy&

Linux文本界面下文字输入的延时与频率调节----kbdrate

有时需要用到字符串界面,但是让我感到蛋疼的是每次输入的时候,一不小心按下时间稍微长一点,本来是late,一眨眼瞬间就是laaaaate, 真是让人抓狂的瞬间.于是乎就开始了寻找答案之旅,果断还是Google(百度找了没找到类似的情况),一下子就有眉目了,找到了相关 命令kbdrate  kbdrate 的作用是调整输入延迟和速率 命令格式: kbdrate [-s] [-r rate ] [-d delay ]  注:rate 是数值,基于Intel的系统,允许范围为2.0到30.0 cps:基

iOS textField文字输入字数以及格式限制

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSInteger existedLength = textField.text.length; NSInteger selectedLength = range.length; NSInteger replaceLength = string.le

jQuery点击文字输入搜索框 搜索

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ