2

我正在尝试创建一个 DateInputFieldModel(ComposableModel 的子类)。

它使用 TextInputFieldModel 作为inputField.
我设置inputField autoAccept: true.

我不想使用 return/enter 来接受。

键入时,我正在使用 acceptBlock 检查输入文本是否可解释为日期。
就我而言,例如,一位数字已经可以解释为日期。
当您键入 5 时,这将表示当年当前月份的 5 号。

当输入字段失去焦点(选项卡或鼠标)时,我想将日期的最终表示呈现到 中inputField,并更新我的 DateInputFieldModel 的日期值。

关于如何实现这一目标的任何指示?

4

2 回答 2

0

底层的 Morph 被发送#keyboardFocusChange:

您可能需要在 ComposableModel 层次结构中的某处添加 #whenFocusChanged: 并确保从正确的 AbstractMorphicAdapter 子类中调用它

于 2015-07-22T07:26:33.407 回答
0

为了回应斯蒂芬·埃格蒙特的建议,我改变了以下方法

MorphicTextInputFieldAdapter>>adapt: aModel
  super adapt: aModel.
  aModel
    whenBuiltDo: [ :w | 
      w widget color: Smalltalk ui theme backgroundColor.
      w widget widget textMorph 
         onAnnouncement: MorphGotFocus, MorphLostFocus  
         send: #announce: to: aModel ]

这可行,但是带有小部件小部件 textMorph 的向下钻取有点尴尬。

在我的 DateInputFieldModel 我订阅了公告

inputField on: MorphLostFocus send: #lostFocus to: self.
于 2015-07-28T06:41:38.507 回答