Nella mia app OS X, voglio consentire all'utente di modificare le immagini con le estensioni di azione appropriate installate sul suo Mac, ad esempio l'estensione di markup dell'immagine presente in Mail.app o TextEdit (per i file RTFD con immagini) - o lo strumento di riparazione di Pixelmator, se disponibile. Per quanto posso ricordare, Apple annuncia al WWDC '14 che ci sarebbe un'API pubblica per questo compito.Uso delle estensioni di modifica delle immagini su Yosemite nella propria app
Purtroppo non riesco a trovare alcun punto di partenza su come utilizzare le estensioni dal punto di vista dell'app host, né sulla documentazione, né sul codice di esempio.
ho scoperto che è necessario impostare la proprietà di stile non documentata del NSSharingPicker ad un valore diverso da zero in questo modo:
- (IBAction)testSharingPicker:(id)sender
{
NSSharingServicePicker *picker = [[NSSharingServicePicker alloc] initWithItems:@[[self.listing.images.firstObject thumbImage]]];
[picker setValue:@(1) forKey:@"style"];
[picker setDelegate:self];
[picker showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMinYEdge];
}
Una volta che il valore dello stile è impostato, sai che sono sulla strada giusta , perché il - (NSArray *)sharingServicePicker:(NSSharingServicePicker *)sharingServicePicker sharingServicesForItems:(NSArray *)items proposedSharingServices:(NSArray *)proposedServices
viene chiamato con le estensioni per la modifica delle immagini installate sul mio sistema, invece delle normali estensioni di condivisione.
È inoltre necessario implementare un metodo delegato non documentato:
- (BOOL)sharingServicePicker:(NSSharingServicePicker *)sharingService shouldShowForView:(NSView*) inView
{
return YES;
}
Ma ancora, il selettore non viene visualizzata. Tutto ciò che ottengo è un bordo strano attorno al pulsante sender
.
hai giocato con '-sharingService: sourceFrameOnScreenForShareItem: '' - sharingService: transitionImageForShareItem: contentRect: 'e' -sharingService: sourceWindowForShareItems: sharingContentScope: '? – catlan
Sì, ho implementato tutti questi metodi. Non fa alcuna differenza Non arrivo al punto in cui sono chiamati. – iljawascoding
eMail <[email protected]> o presentare una richiesta di miglioramento (bug report @:) e richiedere una risposta ufficiale. –
geowar