cocos2dx-3.12 android/ios监听键盘高度
来源:互联网 发布:为什么淘宝追评不显示 编辑:程序博客网 时间:2024/06/05 09:48
目前cocos2dx-3.12版本,键盘弹起时,整个界面往上移动一部分。如图:
但是有时候我们不想要这种效果,比如聊天界面,键盘弹起时只希望部分界面上移,其他不用移动。如图:
这时我们需要监听键盘的高度,所以需要重写cocos2dx::ui::EditBox的如下方法:
virtual void keyboardWillShow(IMEKeyboardNotificationInfo& info)override;
virtual void keyboardWillHide(IMEKeyboardNotificationInfo& info)override;
EditBoxView.h代码
#ifndef __EditBoxView__h__#define __EditBoxView__h__#include "cocos2d.h"#include "ui/CocosGUI.h"class EditBoxView : public cocos2d::ui::EditBox{public: typedef std::function<void(float height)> ccKeyboardHeightChangedCallback; // Here's a difference. Method 'init' in cocos2d-x returns bool virtual bool init(const cocos2d::Size &size); // implement the "static create()" method manually static EditBoxView* create(const cocos2d::Size &size); /** * 添加键盘变化事件 * * @param callback 回调事件 */ void addKeyboardHeightChangedListener(const ccKeyboardHeightChangedCallback &callback) { _keyboardHeightChangedCallback = callback; }; #pragma mark - 重写键盘显示或隐藏方法 // 键盘将要显示回调 virtual void keyboardWillShow(cocos2d::IMEKeyboardNotificationInfo& info) override; // 键盘将要隐藏回调 virtual void keyboardWillHide(cocos2d::IMEKeyboardNotificationInfo& info) override; protected: // 键盘变化事件 ccKeyboardHeightChangedCallback _keyboardHeightChangedCallback = nullptr;};#endifEditBoxView.cpp代码
#include "EditBoxView.h"USING_NS_CC;using namespace ui;EditBoxView* EditBoxView::create(const cocos2d::Size &size){ EditBoxView* pRet = new (std::nothrow) EditBoxView(); if (pRet && pRet->init(size)) { pRet->autorelease(); return pRet; } else { delete pRet; pRet = nullptr; return nullptr; }}bool EditBoxView::init(const cocos2d::Size &size){ if (!EditBox::initWithSizeAndBackgroundSprite(size, Scale9Sprite::create())) { return false; } return true;}void EditBoxView::keyboardWillShow(IMEKeyboardNotificationInfo& info){ if (_keyboardHeightChangedCallback) { _keyboardHeightChangedCallback(info.end.size.height); }}void EditBoxView::keyboardWillHide(IMEKeyboardNotificationInfo& info){ if (_keyboardHeightChangedCallback) { _keyboardHeightChangedCallback(0); }}在自己用到的地方添加代码:
// 屏幕大小auto size = Director::getInstance()->getVisibleSize(); // 输入框背景auto editBoxBg = Scale9Sprite::create("input_bg.png");editBoxBg->setPreferredSize(Size(size.width, 60));editBoxBg->setAnchorPoint(Vec2::ANCHOR_MIDDLE_BOTTOM);editBoxBg->setPosition(size.width * 0.5, 0);this->addChild(editBoxBg); // 输入框auto editBoxView = EditBoxView::create(editBoxBg->getContentSize());editBoxView->setPosition(editBoxView->getContentSize() * 0.5);editBoxView->addKeyboardHeightChangedListener([=](float height){ editBoxBg->setPositionY(height);});editBoxBg->addChild(editBoxView);
ios平台上顺利运行!!!
但是,android平台上运行却不是我们想要的结果,还是键盘弹起时,整个界面往上移动。
cocos2dx-3.12 解决android不能监听键盘高度事件
0 0
- cocos2dx-3.12 android/ios监听键盘高度
- cocos2dx-3.12 解决android不能监听键盘高度事件
- ios键盘高度监听
- iOS 监听键盘高度,监听键盘出现 收回事件
- ios 动态监听键盘输入法和高度
- ios 动态监听键盘输入法和高度
- iOS 监听键盘的高度 - NSNotificationCenter
- ios 监听键盘弹起时间和高度
- iOS 键盘显示或消失的监听,获取键盘高度
- iOS监听键盘弹出,获取键盘的高度
- iOS笔记监听键盘状态 获取键盘高度
- iOS获取键盘弹出高度,监听键盘弹出退出
- iOS中改变键盘的高度 监听键盘
- 监听键盘高度
- iOS技巧——即时监听键盘高度
- iOS开发之监听键盘高度的变化
- iOS开发之监听键盘高度的变化
- iOS 监听键盘弹出的高度,避免挡住界面
- Linux文本编辑器vim的一般用法
- EasyRTMP Android采集AAC流进行RTMP推送
- 勿忘初心
- python第一个坑
- 贾扬清分享_深度学习框架caffe
- cocos2dx-3.12 android/ios监听键盘高度
- Android开源项目之(网络请求框架)
- Linux命令之"pwd"
- oracle行迁移和行链接优化
- leetcode No143. Reorder List
- C/C++堆和栈的区别
- QT实现不规则窗体和透明窗体
- window 7 下安装linux 后,无法启动
- 第十一讲项目4-完数字