Как эмулировать щелчок мышью в приложении Какао? - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно отправить щелчок мыши на мой NSView.Документация говорит о NSEvent +mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure: функции.Но я не могу найти информацию, как именно это использовать.Какие значения timestamp, eventNumber и clickNumber следует использовать?Также нет типа для события click .Существуют типы для событий мыши и мыши.Отправляю ли я их обоих в один момент?Или я должен сделать некоторую задержку?В настоящее время я пытаюсь использовать такой код.

// self.label is NSTextField
[self.label setAllowsEditingTextAttributes: YES];
[self.label setSelectable: YES];

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Google"];
[str addAttribute: NSLinkAttributeName value: @"http://www.google.com" range: NSMakeRange(0, str.length)];
[self.label setAttributedStringValue:str];

NSEvent *mouseEvent;
mouseEvent = [NSEvent mouseEventWithType:NSLeftMouseDown
                                location:NSMakePoint(0., 0.)
                           modifierFlags:0
                               timestamp:0
                            windowNumber:0
                                 context:nil
                             eventNumber:0
                              clickCount:1
                                pressure:1.];
[self.label mouseDown:mouseEvent];

mouseEvent = [NSEvent mouseEventWithType:NSLeftMouseUp
                                location:NSMakePoint(0., 0.)
                           modifierFlags:0
                               timestamp:0
                            windowNumber:0
                                 context:nil
                             eventNumber:0
                              clickCount:1
                                pressure:1.];

[self.label mouseUp:mouseEvent];

Кажется, это работает.Но после такого щелчка при перемещении указателя мыши к метке указатель мыши не отображается как рука (для открытия URL).URL моей первоначальной проблемы не отображается в NSTextField как URL.Это выглядит как обычный текст.После нажатия на любое место в ярлыке (не ссылка) текст подсвечивается.Поэтому я хочу сделать клик программно после NSWindow, показывающего, как применить обходной путь клика.

PS На самом деле первоначальный вопрос с URL в NSTextField решен.Я переписываю свой код, чтобы использовать NSTextView вместо NSTextField.Он полностью работал, как и ожидалось, но требует дополнительной настройки.Также IB автоматически создает NSScrollView для NSTextView.В любом случае вопрос о правильном создании NSEvent и отправке по-прежнему актуален.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вам не нужно щелкать мышью по нему.Сделать его первым ответчиком достаточно.Но это хрупко.Есть много тем об этой исходной проблеме NSTextField с форматом в стиле URL

У меня была такая же проблема, и в итоге я использовал NSTextView вместо NSTextField.

0 голосов
/ 08 декабря 2018

Чтобы изменить указатель мыши, вы можете написать собственный класс текстового поля и переопределить «resetCursorRects»

, вы можете ссылаться на ссылку: Невозможно изменить курсор мыши для NSTextField

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...