Bluetooth HID устройство и iOS текстовые поля - PullRequest
0 голосов
/ 14 сентября 2011

Для связи с iPad мы используем BT-устройство, которое выполняет роль клавиатуры. Мы хотим, чтобы это устройство Bluetooth говорило с 1 полем в нашем приложении. (Который на свой взгляд) Все остальные textFields / areaFields мы хотим отобразить на виртуальной клавиатуре.

Возможно ли это? Всякий раз, когда устройство BT сопряжено, оно отключало экранную клавиатуру.

Мы думали отключить Bluetooth до того, как отобразится вид с полем 1, которому требуется его ввод с устройства, а затем снова включить его, когда вид будет удален, но это имеет 2 проблемы. IPad не будет автоматически подключаться к устройству, и невозможно отключить Bluetooth без использования частных API.

Это связанный вопрос: Принудительное отображение экранной клавиатуры при подключении клавиатуры Bluetooth тот еще не получил удовлетворительного ответа.

Любая помощь будет принята с благодарностью

Приветствие Фил

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Эрика Садун нашла способ вернуть клавиатуру, отправив событие GraphicsServices. Пост: http://www.tuaw.com/2010/06/02/hacksugar-bringing-back-the-on-screen-keyboard/ см. Ссылку на исходный код. Отправка GSEvents может быть не готова к AppStore, но, возможно, стоит попробовать.

0 голосов
/ 05 марта 2012

Фил,

Я не уверен, что вы открыли Framework для внешних аксессуаров, но это, вероятно, ваш лучший выбор, чтобы получить то, что вам нужно и иметь приложение, которое будет принято в магазине. В настоящее время я работаю над некоторыми подобными проблемами и думаю, что именно так я смогу определить, какое из наших поддерживаемых устройств использует пользователь.

https://developer.apple.com/library/ios/#documentation/ExternalAccessory/Reference/ExternalAccessoryFrameworkReference/_index.html

EAAccessoryManager выглядит так, как будто он может вернуть вам список подключенных устройств. Это именно то, что я ищу. После этого я должен выбрать правильный путь для подключения к устройствам.

Это может вернуть вам то, что вас интересует ...

#import <ExternalAccessory/ExternalAccessory.h>

- (void)_getAttachedDevices;
{
    EAAccessoryManager* accessoryManager = [EAAccessoryManager sharedAccessoryManager];
    if (accessoryManager)
    {
        NSArray* connectedAccessories = [accessoryManager connectedAccessories];
        NSLog(@"ConnectedAccessories = %@", connectedAccessories);
    }
}

Надеюсь, это поможет.

...