Событие KeyDown в AppleScript target-c Xcode - PullRequest
0 голосов
/ 05 апреля 2019

Я хотел бы получить доступ к событию KeyDown в текстовом поле.В приведенном ниже коде я написал обычный метод с именем TextfieldKeyDown и, связав его с текстовым полем из списка делегатов, при нажатии клавиши ввода запускается код метода.Как выполнить метод, когда я нажимаю, например, букву D или букву F?

on TextfieldKeyDown_(sender)
    log "Enter Pressed"
end TextfieldKeyDown_

Заранее спасибо.

1 Ответ

0 голосов
/ 05 апреля 2019

Ваш обработчик - это обычный метод действия, который обычно вызывается, когда редактирование в textField завершено.Для дополнительного контроля вы можете добавить метод NSControlTextEditingDelegate для отслеживания изменений в textField.

В Редакторе интерфейса подключите делегат вашего textField к классу / файлувы собираетесь использовать (например, AppDelegate), затем добавьте к нему метод controlTextDidChange::

on controlTextDidChange_(aNotification) -- example to show character at insertion point
  set theTextField to aNotification's object() -- the control being changed
  set {theText, theEditor} to {stringValue(), currentEditor()} of theTextField
  set insertPoint to (location of first item of (theEditor's selectedRanges() as list)) as integer
  if (theText as text is not "") and (insertPoint is not 0) then
    set theCharacter to text insertPoint of (theText as text) -- the added character
  else
    set theCharacter to "(none)"
  end if
  log "character at insertion point: " & theCharacter — show it
end
...