【问题标题】:How do I place a subview in front of the keyboard?如何在键盘前放置子视图?
【发布时间】:2012-03-26 10:45:56
【问题描述】:

我希望在显示的键盘前插入子视图。我正在使用以下代码:

[self.view bringSubviewToFront: myView];

但子视图不显示。

【问题讨论】:

  • 你真正想做什么?因为在“键盘”前显示视图没有意义。我敢肯定你在问你的问题时错过了一些东西。使用您想要做的更多细节来扩展您的问题。如果你有的话,也可以放任何屏幕截图。

标签: iphone iphone-softkeyboard


【解决方案1】:

我不确定您在寻找什么,但我最好的猜测是您想在键盘上查看“完成”/“返回”。 你也许可以通过做这样的事情来做到这一点(当键盘出现时)

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];  
UIView* keyboard;  
for(int i=0; i<[tempWindow.subviews count]; i++)   
{
    keyboard = [tempWindow.subviews objectAtIndex:i];  
    // keyboard view found; add the custom button to it  
    if([[keyboard description] hasPrefix:@"UIKeyboard"] == YES)  
        [keyboard addSubview:doneButton];  
}  

bringSubviewToFront 想法失败了,因为它(键盘)不是应用程序的子视图。

【讨论】:

  • 从我在 iOS 7 上看到的情况来看,windows 属性并不总是有 2 个窗口。不过,在 iOS 8 上,这似乎可以正常工作。
【解决方案2】:

来自this question的感谢Artyom

与其使用这个 for 循环来查找正确的窗口,不如使用:

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

[window addSubview:_menuView];
[window bringSubviewToFront:_menuView];

只要您在键盘处于活动状态时添加它,那么键盘将始终是最后添加的视图,并且大大降低了代码复杂度。

【讨论】:

    【解决方案3】:

    @Altaf,您在代码中提到的前缀不是好前缀。你应该使用:

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

    See an example,使用 Touchpose 类显示演示应用程序的触摸,我对其进行了修改以在键盘上显示动画。

    【讨论】:

      猜你喜欢
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多