如何在键盘视图和顶视图中添加自定义子视图? (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 中使用)的主要内容,如果未能解决你的问题,请参考以下文章
延迟加载 UICollectionViewCell 的自定义子视图