Обнаруживать, когда InputField получает фокус клавиатуры


10

Как я могу обнаружить, когда фокус InputField?

Например, в идеале что-то подобное будет работать.

EventHandler[ 
InputField["default", String], { 
    "FocusGained" :> (MessageDialog["Focus"]), 
    "FocusLost" :> (MessageDialog["unFocus"]), 
    "Focus" :> (MessageDialog["Focus"]) 
    } 
] 

После прочтения this question я предполагал «FocusGained, FocusLost или Фокус» будет делать что-то, но я не везло только пока.

+1

Обходным способом может быть использование «MouseClicked» для запуска «фокуса», а затем использовать «ControllerState [« Button 1 »]' для запуска «нефокусировки», используя «MouseEntered» и «MouseExited», чтобы определить, был ли щелчок внутри вне поля ввода. 25 авг. 132013-08-25 17:57:43

+1

Это не события для события EventHandler, а события в [GUIKit] (http://reference.wolfram.com/mathematica/GUIKit/tutorial/Overview.html). 26 авг. 132013-08-26 00:33:52

1

Нет, нет никаких документов, подтверждающих эти события напрямую.

С таким количеством людей, которые выкапывают недокументированные функции, я думаю, что можно с уверенностью сказать, что нет ничего недокументированного.

Существует возможность играть с косвенными методами, например. прослушивание SelectionData и т. д., но я не думаю, что это даст нам общий инструмент или масштабируемый.

Может быть, кто-то попытается что-то приготовить с этой идеей, между тем, я думаю, что стоит взять это с неотвеченного стека.

  0

Я предполагаю, что «тем временем я думаю, что стоит взять это из безответного стека» означает, что нет смысла оставлять этот вопрос без ответа, когда нет однозначного ответа. 28 фев. 182018-02-28 03:26:28

  0

@ Виллиам что-то вроде этого, может быть, лучше «ответ - нет, но может быть, кто-то предоставит конкретный трюк для случая». 28 фев. 182018-02-28 07:01:45