DateField defines
ValueChanged somewhat differently than a regular
TextField, as you have noticed. A DateField will fire a ValueChanged when the value of the string is a valid date, so the intermediate displayed strings don't count.
If you want to see all of the base text character changes, you'll need to add an event handler to the internal text field. Both
StandardDateFieldUI and
SkinnableDateFieldUI use a
SpinControl internally, which in turn uses a
TextField internally. So you would need to add a ValueChanged handler to the TextField of the SpinControl of the DateField. You could do this by subclassing whichever of the UIs you were using. In a somewhat less correct way that is however easier to experiment with, if you were careful to notice all UI changes, you could search down through the DateField's graphical hierarchy for the TextField and simply
add-event-handler to it.
PointerPress is not coming up on the DateField for similar reasons: it's being consumed by one of the subcontrols that make up the DateField. If you wanted to see all PointerPresses coming into the DateField, you could add a handler for
PointerEnvelopeEvent, which is the wrapper for PointerPress and other pointer events as they work their way down to their destination. If you checked the
contents field, you can look for a PointerPress and react in those cases. Just be careful about consuming it as that would affect the operation of the DateField. Also, this will actually give you the information about the PointerPress simply before it would actually be unwrapped, in case that timing matters for whatever operation you are planning.
Alternatively, if you are subclassing one of the UIs, or using the search technique above, you can simply add a PointerPress handler to whichever subcontrol you need to, but that is again potentially disruptive if you will be consuming the event.
In any case, you can look at the OPEN-CONTROLS code to see exactly what is happening with the internal event handling in these cases.