Как идентифицировать объект в AppleScript

Данные здесь примеры предназначены для AppleScriptObjC (Cocoa frameworks using AppleScript - XCode). В обычном AppleScript это не работает.

Итак. Как идентифицировать определенный объект в том случае, когда в одном View создано несколько однотипных объектов? Например есть форма, в ней два текстовых поля и они оба делегата. Как определить, внутри какого поля печатают?

Есть несколько вариантов, например:

  1. Использовать tag.
  2. Сравнить объекты.

Вариант первый: по tag

-- set aTag to tag of aComboBox as integer
on comboBox_completedString_(aComboBox, partialString)
    set aTag to tag of aComboBox as integer
    log "aTag: " & aTag

    return ""
end comboBox_completedString_

Вариант второй: сравнить объекты

on comboBox_completedString_(aComboBox, partialString)
    -- Варианты примеров идентификации объектов.
    -- https_://www.macscripter.net/viewtopic.php?pid=174541
    --if aComboBox's object() is myComboFiles then -- ошибка
    --if aComboBox's object()'s isEqual:myComboFiles then -- ошибка
    --if aComboBox = myComboFiles then -- ошибка
    
    if aComboBox is myComboFiles() then
        log "is comboFiles 1"
    end if

    if aComboBox is myComboFiles2() then
        log "is comboFiles 2"
    end if

    return ""
end comboBox_completedString_

или в другом методе

-- Не проверено, но смысл понятен.
on controlTextDidChange_(aNotification)
   
   if aNotification's object() is myComboFiles() then
       log "is myComboFiles"
   end if
   
end controlTextDidChange_

 

Примечание: Если у вас есть только одно текстовое поле, вам не нужно выполнять проверку типа. Но в случае нескольких объектов, воспользуйтесь примерами выше.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *