Подвид iOS 8.3 на родной клавиатуре (UIInputSetHostView) не реагирует на прикосновения

После недавнего обновления 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];

            }
        }
    }
}

Благодарю вас!


person Edvardas    schedule 06.05.2015    source источник
comment
Добавление подпредставлений к родным клавиатурам никогда не поддерживалось. Либо используйте стандартный inputAccessoryView текстового поля или текстового представления, либо напишите пользовательскую клавиатуру. Любой другой взлом просто сломается каждый раз, когда выходит обновление iOS.   -  person rmaddy    schedule 06.05.2015