editBox 源码问题

  • (void)setInputFlag:(cocos2d::ui::EditBox::InputFlag)flag
    {
    self.dataInputMode = flag;
    switch (flag)
    {
    case cocos2d::ui::EditBox::InputFlag::PASSWORD:
    //textView can’t be used for input password
    self.textInput.ccui_secureTextEntry = YES;
    break;

      case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD:
          self.textInput.autocapitalizationType = UITextAutocapitalizationTypeWords;
          break;
    
      case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_SENTENCE:
          self.textInput.autocapitalizationType = UITextAutocapitalizationTypeSentences;
          break;
    
      case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_ALL_CHARACTERS:
          self.textInput.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
          break;
    
      case cocos2d::ui::EditBox::InputFlag::SENSITIVE:
          self.textInput.autocorrectionType = UITextAutocorrectionTypeNo;
          self.textInput.autocapitalizationType = UITextAutocapitalizationTypeNone;
          break;
          
      case cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS:
          self.textInput.autocapitalizationType = UITextAutocapitalizationTypeNone;
          break;
          
      default:
          break;
    

    }
    }

editBox的CCUIEditBoxIOS.mm中有以上一段代码,很明显看出如果我先把inputMode 设置成PASSWORD模式,然后再把inputMode设置成DEFAULT模式,那么textInput.ccui_secureTextEntry仍然会等于YES,所以输入状态还是和PASSWORD模式一样

@jare @dumganhar

switch语句应该改成这样吧

switch (flag)
{
case cocos2d::ui::EditBox::InputFlag::PASSWORD:
//textView can’t be used for input password
self.textInput.ccui_secureTextEntry = YES;
break;

    case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD:
        self.textInput.ccui_secureTextEntry = NO;
        self.textInput.autocapitalizationType = UITextAutocapitalizationTypeWords;
        break;

    case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_SENTENCE:
        self.textInput.ccui_secureTextEntry = NO;
        self.textInput.autocapitalizationType = UITextAutocapitalizationTypeSentences;
        break;

    case cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_ALL_CHARACTERS:
        self.textInput.ccui_secureTextEntry = NO;
        self.textInput.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
        break;

    case cocos2d::ui::EditBox::InputFlag::SENSITIVE:
        self.textInput.ccui_secureTextEntry = NO;
        self.textInput.autocorrectionType = UITextAutocorrectionTypeNo;
        self.textInput.autocapitalizationType = UITextAutocapitalizationTypeNone;
        break;
        
    case cocos2d::ui::EditBox::InputFlag::LOWERCASE_ALL_CHARACTERS:
        self.textInput.ccui_secureTextEntry = NO;
        self.textInput.autocapitalizationType = UITextAutocapitalizationTypeNone;
        break;
        
    default:
        break;
}