2015-05-23 16 views
6

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ę

+2

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 . –

+0

@BenPious dzięki za inspiracje! Doceniam wszelkie wskazówki dotyczące "pola tekstowego w stylu Twittera" –

+2

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/ –

Odpowiedz

2

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.

+0

u prawo, ale istnieje obejście (sprawdź komentarze powyżej) –

+2

'self. textDocumentProxy.keyboardType' powinien działać. – Schemetrical

5

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!

Powiązane problemy