Я думаю, что ваш фокус на "мышь вверх" как конечное событие может быть слишком узким. Например, что происходит, когда пользователь щелкает, а затем выбирает текст с помощью клавиш со стрелками Shift? Разве ваше программное обеспечение не должно иметь такой же эффект в этом случае?
То, что малоизвестно предложено, звучит разумно для мышиной части уравнения, но я обеспокоен тем, что, когда выделение меняется с помощью мыши, вы, возможно, никогда не получите окончательное «изменение выделенного», когда мышь находится вверх.
Итак, я бы, вероятно, подошел к этой проблеме с чистой задержкой NSTimer. каждый раз, когда вы получаете «изменение, измененное» в веб-представлении, сбрасывайте NSTimer. По истечении некоторого времени, скажем, 0,5 секунды, поднимите и / или переместите окно.
Точную настройку можно выполнить, проверив по истечении времени таймера такие критерии, как, если мышь все еще не нажата. Если мышь не работает, вы можете просто немного отложить таймер и посмотреть, была ли мышь поднята еще через полсекунды или около того.