首页 > 代码库 > 关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方式
关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方式
近日開始将项目移植到cocos2dx 3.0版本号,出现了一些问题,UI方面眼下就发现UITextField控件不能响应退格键或者删除键,在Windows以下调试如此,我開始以为是平台支持不好,后来公布到Android后也是如此。
没办法仅仅好跟踪了一下源代码。Key操作基本的处理是在CCGLView类里面的GLView::onGLFWKeyCallback()。看了一下其它函数的处理,定位问题是没有通知IMEDispatcher。尝试在这个函数里面加入?了几行代码:
if(GLFW_KEY_DELETE == key) { IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward(); }
再測试的时候发现已经能够了。只是这样改比較苟且,代码不太优美。并且不知道cocos2dx官方这样设计的目的是什么。最后决定在AppDelegate里面加入?监听然后再处理。详细代码例如以下:
static void keyEventCallback(EventKeyboard::KeyCode code, Event *event) { typedef EventKeyboard::KeyCode KeyCode; switch(code) { case KeyCode::KEY_BACKSPACE: #if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward(); #else Director::getInstance()->end(); #endif break; case KeyCode::KEY_DELETE: IMEDispatcher::sharedDispatcher()->dispatchDeleteBackward(); break; } }
EventListenerKeyboard *listener = EventListenerKeyboard::create(); listener->onKeyReleased = keyEventCallback; director->getEventDispatcher()->addEventListenerWithFixedPriority(listener, 1);问题算是攻克了。
关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。