void CAIMEDispatcher::dispatchKeyboardDidHide(CCIMEKeyboardNotificationInfo& info) { if (m_pImpl) { if(m_pImpl->m_DelegateWithIme){ m_pImpl->m_DelegateWithIme->keyboardDidHide(info); #if CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID m_pImpl->m_DelegateWithIme->canDetachWithIME(); m_pImpl->m_DelegateWithIme->getKeyBoardHeight(0); m_pImpl->m_DelegateWithIme->didDetachWithIME(); #endif } return; CAIMEDelegate * pDelegate = 0; DelegateIter last = m_pImpl->m_DelegateList.end(); for (DelegateIter first = m_pImpl->m_DelegateList.begin(); first != last; ++first) { pDelegate = *(first); if (pDelegate) { pDelegate->keyboardDidHide(info); } } } }
void CAIMEDispatcher::dispatchKeyboardDidHide(CCIMEKeyboardNotificationInfo& info) { if (m_pImpl) { CAIMEDelegate * pDelegate = 0; DelegateIter last = m_pImpl->m_DelegateList.end(); for (DelegateIter first = m_pImpl->m_DelegateList.begin(); first != last; ++first) { pDelegate = *(first); if (pDelegate) { pDelegate->keyboardDidHide(info); } } } }
bool CAIMEDispatcher::attachDelegateWithIME(CAIMEDelegate * pDelegate) { bool bRet = false; do { CC_BREAK_IF(! m_pImpl || ! pDelegate); DelegateIter end = m_pImpl->m_DelegateList.end(); DelegateIter iter = m_pImpl->findDelegate(pDelegate); // if pDelegate is not in delegate list, return CC_BREAK_IF(end == iter); if (m_pImpl->m_DelegateWithIme) { // if old delegate canDetachWithIME return false // or pDelegate canAttachWithIME return false, // do nothing. CC_BREAK_IF(! m_pImpl->m_DelegateWithIme->canDetachWithIME() || ! pDelegate->canAttachWithIME()); // detach first CAIMEDelegate * pOldDelegate = m_pImpl->m_DelegateWithIme; m_pImpl->m_DelegateWithIme->getKeyBoardHeight(0); m_pImpl->m_DelegateWithIme = 0; pOldDelegate->didDetachWithIME(); m_pImpl->m_DelegateWithIme = *iter; pDelegate->didAttachWithIME(); bRet = true; break; } // delegate hasn't attached to IME yet CC_BREAK_IF(! pDelegate->canAttachWithIME()); m_pImpl->m_DelegateWithIme = *iter; pDelegate->didAttachWithIME(); bRet = true; } while (0); return bRet; }
void CAIMEDispatcher::dispatchKeyboardWillShow(CCIMEKeyboardNotificationInfo& info) { if (m_pImpl) { if(m_pImpl->m_DelegateWithIme){ m_pImpl->m_DelegateWithIme->keyboardWillShow(info); } return; CAIMEDelegate * pDelegate = 0; DelegateIter last = m_pImpl->m_DelegateList.end(); for (DelegateIter first = m_pImpl->m_DelegateList.begin(); first != last; ++first) { pDelegate = *(first); if (pDelegate) { pDelegate->keyboardWillShow(info); } } } }