zoukankan      html  css  js  c++  java
  • 关于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);
            问题算是攻克了。


  • 相关阅读:
    vue2.0 实现click点击当前li,动态切换class
    关于事件冒泡和键盘事件 以及与Angular的区别
    vue 的事件冒泡
    Vue2键盘事件
    Vue2键盘事件:keydown/keyup...
    项目bug
    vue2 如何操作dom
    Redis配置文件说明
    Linux下ffmpeg的完整安装
    C++ error: passing 'const std::map<>]' discards qualifiers或pass-by-reference-to-const-map导致的“discards qualifiers”
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4021021.html
Copyright © 2011-2022 走看看