Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix bug: voice recognition input crash on ios7 #5861

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions cocos2dx/platform/ios/CCDirectorCaller.mm
Expand Up @@ -22,8 +22,11 @@ of this software and associated documentation files (the "Software"), to deal
THE SOFTWARE.
****************************************************************************/
#import <Foundation/Foundation.h>
#import <OpenGLES/EAGL.h>
#import "CCDirectorCaller.h"
#import "CCDirector.h"
#import "CCEGLView.h"
#import "EAGLView.h"

static id s_sharedDirectorCaller;

Expand Down Expand Up @@ -91,6 +94,7 @@ -(void) setAnimationInterval:(double)intervalNew

-(void) doCaller: (id) sender
{
[EAGLContext setCurrentContext:[[EAGLView sharedEGLView] context]];
cocos2d::CCDirector::sharedDirector()->mainLoop();
}

Expand Down
1 change: 1 addition & 0 deletions extensions/GUI/CCEditBox/CCEditBoxImplIOS.h
Expand Up @@ -91,6 +91,7 @@ class CCEditBoxImplIOS : public CCEditBoxImpl

virtual void setText(const char* pText);
virtual const char* getText(void);
virtual void refreshInactiveText();
virtual void setPlaceHolder(const char* pText);
virtual void setPosition(const CCPoint& pos);
virtual void setVisible(bool visible);
Expand Down
32 changes: 25 additions & 7 deletions extensions/GUI/CCEditBox/CCEditBoxImplIOS.mm
Expand Up @@ -169,7 +169,7 @@ - (BOOL)textFieldShouldEndEditing:(UITextField *)sender
{
CCLOG("textFieldShouldEndEditing...");
editState_ = NO;
getEditBoxImplIOS()->setText(getEditBoxImplIOS()->getText());
getEditBoxImplIOS()->refreshInactiveText();

cocos2d::extension::CCEditBoxDelegate* pDelegate = getEditBoxImplIOS()->getDelegate();
if (pDelegate != NULL)
Expand Down Expand Up @@ -479,12 +479,13 @@ - (void) textChanged
return [m_systemControl isEditState] ? true : false;
}

void CCEditBoxImplIOS::setText(const char* pText)
void CCEditBoxImplIOS::refreshInactiveText()
{
m_systemControl.textField.text = [NSString stringWithUTF8String:pText];
if(m_systemControl.textField.hidden == YES) {
setInactiveText(pText);
if(strlen(pText) == 0)
const char* text = getText();
if(m_systemControl.textField.hidden == YES)
{
setInactiveText(text);
if(strlen(text) == 0)
{
m_pLabel->setVisible(false);
m_pLabelPlaceHolder->setVisible(true);
Expand All @@ -497,9 +498,26 @@ - (void) textChanged
}
}

void CCEditBoxImplIOS::setText(const char* text)
{
NSString* nsText =[NSString stringWithUTF8String:text];
if ([nsText compare:m_systemControl.textField.text] != NSOrderedSame)
{
m_systemControl.textField.text = nsText;
}

refreshInactiveText();
}

NSString* removeSiriString(NSString* str)
{
NSString* siriString = @"\xef\xbf\xbc";
return [str stringByReplacingOccurrencesOfString:siriString withString:@""];
}

const char* CCEditBoxImplIOS::getText(void)
{
return [m_systemControl.textField.text UTF8String];
return [removeSiriString(m_systemControl.textField.text) UTF8String];
}

void CCEditBoxImplIOS::setPlaceHolder(const char* pText)
Expand Down