Cocos2dx - 使用 TextField 的小技巧

Cocos2dx - 使用 TextField 的小技巧

📅 ・ 約 2 分鐘閱讀

Cocos2dx 中的 TextField 並沒有很好使用, 文件中也有許多缺漏, 下面列出目前版本 (v3.7) 中的TextField 一些限制。

  • TextField 在用戶輸入時, 沒有在閃的鼠標 (Cursor), 所以實際使用情況會與 iOS 原生地Textfield 有所落差
  • TextField 沒有可以客製化的 Return 按鈕
  • 無法選擇出現的 Keyboard 類型

那麼下面介紹使用 TextField 的一些小技巧。

將 TextField 的文字置中

textField->setTextHorizontalAlignment(TextHAlignment::CENTER);
textField->setTextVerticalAlignment(TextVAlignment::CENTER);

手動開啟或關閉 TextField

UICCTextField* ime = dynamic_cast<UICCTextField*>(textField->getVirtualRenderer());
ime->closeIME(); // 關閉
ime->openIME(); // 開啟
  • textField 由 IME 所控制, 而 IME 主要控制不同平台間的硬體元件, 所以如果要手動開啟或關閉Textfield 需要先將 IME 叫出來, 在做開啟或者關閉的動作

改變 Place holder 中的文字顏色

  • Place holder 中的文字為 TextField 的預設文字, 其中的文字顏色在 CocosStudio 無法更改, 需要手動變更。

    textField->setPlaceHolderColor(Color4B::GREEN);

TextField 事件寫法

textField->addEventListener([textField](Ref* pSender, ui::TextField::EventType type) {
    if (type == ui::TextField::EventType::DETACH_WITH_IME) {
        // 關掉 TextField 時, 做 ...
    }
});

最後, 我們有個關於 Cocos2d-x 的Facebook社團, 如果有任何疑難問題, 歡迎到社團發問。

Cocos2dx Taiwan 開發者社團