Я много искал в StackOverflow по этой теме. И то, что я нашел до сих пор, было очень полезно. Но теперь я пришел к очень интересному факту.
В моем случае я прячу приложение через NSApp hide:self
Затем я добавляю символ в монтажную панель, а затем пытаюсь ввести его в переднем приложении через CGEvents. Мой код для этого выглядит следующим образом:
-(void)applicationDidHide:(NSNotification *)notification{
stringToInsert = @"©";
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
[pasteboard clearContents];
NSArray *copiedObjects = [NSArray arrayWithObject:stringToInsert];
[pasteboard writeObjects:copiedObjects];
//Use CGEvents to "press" Cmd-V
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef pasteCommandDown = CGEventCreateKeyboardEvent(source, (CGKeyCode)9, YES);
CGEventSetFlags(pasteCommandDown, kCGEventFlagMaskCommand);
CGEventRef pasteCommandUp = CGEventCreateKeyboardEvent(source, (CGKeyCode)9, NO);
CGEventPost(kCGAnnotatedSessionEventTap, pasteCommandDown);
CGEventPost(kCGAnnotatedSessionEventTap, pasteCommandUp);
CFRelease(pasteCommandUp);
CFRelease(pasteCommandDown);
CFRelease(source);
}
Моя проблема заключается в том, что он не хочет вставлять текст, когда я запускаю его из XCode без точек останова. Скорее, это делает характерного «макинтоша» макинтошом, если он не способен что-то сделать.
Но , если Я устанавливаю точку останова для самого метода, а затем прыгаю за строкой, он с любопытством вставляет ее в момент.
Извините за мой плохой английский и за, возможно, плохое форматирование текста, поскольку я новичок здесь в stackoverflow.
Если бы вы могли помочь, я был бы очень признателен!