Jak wykryć, w której aplikacji używana jest moja niestandardowa klawiatura i wyświetlać inny przycisk? E.g. na Twitterze dodałbym @ do napisu I wstawił do pola wejściowego iw Reddit/r/W niestandardowej klawiaturze iOS wykryj aplikację
Odpowiedz
Nie jest to możliwe. Rozszerzenie działa pod piaskownicą i pobiera tylko informacje z interfejsu API i nie ma dostępu do niczego innego. Klawiatura może odbierać tylko zmiany kontekstu tekstu i aktywować/dezaktywować połączenia. Wykrywanie aplikacji leży poza obszarem piaskownicy rozszerzającej i dlatego jest niemożliwe.
u prawo, ale istnieje obejście (sprawdź komentarze powyżej) –
'self. textDocumentProxy.keyboardType' powinien działać. – Schemetrical
Jest to możliwe poprzez następujący kod. Jak dostaniesz identyfikator pakietu aplikacji, w której używasz niestandardowego klawiaturę ..
Swift
let hostBundleID = self.parentViewController!.valueForKey("_hostBundleID")
let currentHostBundleID = String(hostBundleID)
print(currentHostBundleID);
Od identyfikatorem wiązki można łatwo znaleźć nazwę aplikacji.
Powodzenia!
Jak powiedział Schemetrical, nie możesz określić aplikacji, w której się znajdujesz (przynajmniej nie jesteś * przypuszczalnie * być w stanie być, i prawdopodobnie każda zamieszczona tutaj odpowiedź będzie uważana za lukę i zostanie naprawiona przez Apple), ale * możesz * wiedzieć, że jesteś w polu tekstowym stylu Twitter i odpowiednio reagować, co może być lepsze niż znajomość aplikacji, ponieważ są wbudowane interfejsy API do publikowania na Twitterze, które mogą być używane z dowolnej aplikacji . –
@BenPious dzięki za inspiracje! Doceniam wszelkie wskazówki dotyczące "pola tekstowego w stylu Twittera" –
Masz dostęp w interfejsie API do obiektu (nie pamiętam), który implementuje ten protokół: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/ –