После недавнего обновления iOS SDK 8.3 я не могу правильно добавить подвид к собственной клавиатуре (UIInputSetHostView). До обновления я использовал это решение (https://stackoverflow.com/a/26041697/1187451), и все работало отлично. Однако на данный момент этот обходной путь не работает должным образом. После добавления подвида поверх клавиатуры и попытки выбрать элемент вместо этого выбираются буквы родной клавиатуры (Снимок экрана: http://grab.by/H3aY). Если я правильно понял, яблоко изменило возвращаемое значение UIInputSetHostView pointInside:withEvent:...
По сути, то, что я пытаюсь сделать, похоже на приложение для обмена сообщениями в Facebook, когда пользователь на экране чата может выбирать наклейки, которые отображаются поверх клавиатуры.
Может быть, кто-то из вас знает, как это сделать?
Код, который я использую:
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;
for(int i=0; i<[tempWindow.subviews count]; i++)
{
keyboard = [tempWindow.subviews objectAtIndex:i];
if([[keyboard description] hasPrefix:@"<UIInputSetContainerView"] == YES)
{
for(int i = 0 ; i < [keyboard.subviews count] ; i++)
{
UIView* hostkeyboard = [keyboard.subviews objectAtIndex:i];
if([[hostkeyboard description] hasPrefix:@"<UIInputSetHost"] == YES)
{
[hostkeyboard addSubview:stickersView];
}
}
}
}
Благодарю вас!
inputAccessoryView
текстового поля или текстового представления, либо напишите пользовательскую клавиатуру. Любой другой взлом просто сломается каждый раз, когда выходит обновление iOS. - person rmaddy   schedule 06.05.2015