如何检测硬件键盘是否连接到iPhone?

可能重复:
iPad:检测外部键盘是否存在

我一直在挖掘参考图书馆,似乎无法find答案。

我假设有一些API可以查询我们是否正在使用外部硬件键盘。

更新我刚刚尝试从ExternalAccessory.framework EAAccessoryManager.connectedAccessories 。 这是一个不行,当硬件键盘启用时,它返回一个空的数组。

我认为你必须使用下面的代码 –

 - (void)viewDidLoad { UIView* _noExternalAccessoriesPosterView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [_noExternalAccessoriesPosterView setBackgroundColor:[UIColor whiteColor]]; _noExternalAccessoriesLabelView = [[UILabel alloc] initWithFrame:CGRectMake(60, 170, 240, 50)]; [_noExternalAccessoriesLabelView setText:@"No Accessories Connected"]; [_noExternalAccessoriesPosterView addSubview:_noExternalAccessoriesLabelView]; [[self view] addSubview:_noExternalAccessoriesPosterView]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil]; [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; _eaSessionController = [EADSessionController sharedController]; _accessoryList = [[NSMutableArray alloc] initWithArray:[[EAAccessoryManager sharedAccessoryManager] connectedAccessories]]; [self setTitle:@"Accessories"]; if ([_accessoryList count] == 0) { [_noExternalAccessoriesPosterView setHidden:NO]; } else { [_noExternalAccessoriesPosterView setHidden:YES]; } } - (void)_accessoryDidConnect:(NSNotification *)notification { EAAccessory *connectedAccessory = [[notification userInfo] objectForKey:EAAccessoryKey]; [_accessoryList addObject:connectedAccessory]; if ([_accessoryList count] == 0) { [_noExternalAccessoriesPosterView setHidden:NO]; } else { [_noExternalAccessoriesPosterView setHidden:YES]; } NSIndexPath *indexPath = [NSIndexPath indexPathForRow:([_accessoryList count] - 1) inSection:0]; [[self tableView] insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft]; } 

希望这对你有用,记住你必须使用ExternalAccessory Framework来完成这段代码。