如何在键盘视图和顶视图中添加自定义子视图? (iOS8 及以下无法在 iOS9 中使用)

Posted

技术标签:

【中文标题】如何在键盘视图和顶视图中添加自定义子视图? (iOS8 及以下无法在 iOS9 中使用)【英文标题】:How to add Custom Subview in keyboard view and on top view away? (work in iOS8 and below not work in iOS9) 【发布时间】:2016-02-03 11:01:37 【问题描述】:

我的步骤:

    我从下面的代码中获取键盘视图 (GetKeyboardView) 我创建自定义视图,然后添加到键盘视图表单 (1.)

我有一个问题,为什么它可以在 ios8 和下面运行,但在 iOS9 中不起作用。 在 iOS9 中,键盘视图位于每个视图的顶部。如何解决这个问题呢?请给我建议。


获取键盘视图的代码(有效)


-(UIView *)GetKeyboardView

// locate keyboard view
int windowCount = (int)[[[UIApplication sharedApplication] windows] count];
if (windowCount < 2) 
    return nil;


UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;

for(int i = 0 ; i < [tempWindow.subviews count] ; i++)

    keyboard = [tempWindow.subviews objectAtIndex:i];


    // keyboard found, add the button

    if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)

            return keyboard;

    //This code will work on iOS 8.0
    else 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)
                return keyboard;
            
        
    


return nil;

【问题讨论】:

【参考方案1】:

使用

UIWindow* tempWindow = [UIApplication sharedApplication].windows.lastObject;

而不是

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];

【讨论】:

以上是关于如何在键盘视图和顶视图中添加自定义子视图? (iOS8 及以下无法在 iOS9 中使用)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIView 插座连接到自定义子视图

iOS 视图上的自定义子视图有空插座

延迟加载 UICollectionViewCell 的自定义子视图

防止 UITableView 在自定义子视图处理触摸时滚动

如何将自定义子视图的宽度设置为没有宽度限制的父 UIView 的 1/3?

IBOutlets/actions 和自定义子视图