- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个正在加载覆盖 Controller 的应用程序(显示相机以便我可以扫描)。它在 iPhone 上运行良好,在我第二次调用它后在 iPad 上运行良好。让我解释一下。
我有一个以模态方式加载 View Controller 的 UIButtonBarItem。 Controller 中有几个控件,大多数按钮(使用 Nib 定义)。如果我在 iPhone 上加载 Controller (通过响应 UIButtonBarItem 操作),它每次都会加载并且所有按钮都能正常工作。
但是...如果我使用 UIPopoverController 加载相同的 View Controller ,则在我第一次加载它时没有任何按钮会响应。因此,我触摸 Controller 外部某处的屏幕并关闭 Controller 。然后,我再次触摸相同的操作按钮,现在当 Controller 加载时, View Controller 中的所有控件都运行良好。真的很奇怪!
[可能的提示]当我第一次加载它时,按钮到处都是奇怪的位置。随后的每个调用都会在正确的位置显示按钮。我通过禁用 Nib 中的“Autoresize subviews”来实现它。这些按钮现在位于正确的位置,但当我第一次加载此弹出窗口时它们仍然没有响应。
这是我用来响应 UIButtonBarItem 的代码。
-(void)launchOverlayController:(id)sender
{
if([pickerControllerPopover isPopoverVisible])
{
[pickerControllerPopover dismissPopoverAnimated:YES];
pickerControllerPopover = nil;
return;
}
// Deselect any selected cell
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:NO];
// Working code that shows the overlay (camera on) but the overlay takes the whole screen
SRSScanVINViewController *scanVINViewController = [[SRSScanVINViewController alloc] init];
[pickerController setOverlay:scanVINViewController];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:scanVINViewController];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
pickerControllerPopover = [[UIPopoverController alloc] initWithContentViewController:pickerController];
[pickerControllerPopover setDelegate:self];
[pickerControllerPopover setPopoverContentSize:CGSizeMake(320.0f, 460.0f)];
[pickerControllerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
else
{
[self presentViewController:pickerController animated:YES completion:nil];
}
}
我完全没有想法。我不明白为什么 overlaycontroller 中的控件在我每次调用它时都能正常工作,但第一次除外。
提前感谢任何人的帮助。
最佳答案
所以答案是父类(super class)破坏了您的 View 。我猜它不是为子类设计的,但无法确定。它在其中一种“view..”方法中所做的是用自己的 View 覆盖 self.view,并使您的 View 成为该 View 的 subview 。第一次围绕它使您的 View 框架具有零维。下次它像以前一样离开它时 - 也许是一些持久的标志。它还在其 subview 的不同位置插入 View ,这看起来很奇怪,但如果您有代码,您可能会明白为什么。
Soooo - 问题的解决方案是将 View 的 subview 移动到 superView(子类的 View ),然后将 View 的框架设置为空框架:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated]; // StackOverflow says to add this TCL?
// Set the initial scan orientation
[self setLayoutOrientation:self.parentPicker.orientation];
if ([self.parentPicker hasFlash])
{
[flashButton setEnabled:YES];
[flashButton setStyle:UIBarButtonItemStyleBordered];
[self.parentPicker turnFlash:NO];
} else
{
[flashButton setEnabled:NO];
}
textCue.text = @"";
viewHasAppeared = NO;
// move the subviews
while([self.view.subviews count]) [self.view.superview addSubview:[self.view.subviews objectAtIndex:0]];
self.view.frame = CGRectMake(0,0,0,0);
}
PS:请注意,您在这里错过了一个 superView 调用,但这似乎并不重要(您不知道您的复杂父类(super class)可能需要哪种方法,所以我一定会向他们发送您拦截的所有内容。
关于ios - 控件在初始加载时不响应 UIPopoverController 但在后续加载时响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335435/
如上所述,在 iOS8 中,[UIPopoverController presentPopoverFromRect] 不再适用于 [UIApplication sharedApplication].k
我有一个 UISearchBar。当用户触摸 UISearchBar 时,会显示一个包含结果的 UITableView 的 UIPopoverController。当用户输入时,结果就会出现。 我希望
我正在尝试创建一个如上所示的弹出窗口。 它可以是一个按钮或只有一个项目的 TableViewController。 我查看了很多教程,但它们似乎都比必要的复杂得多。 有没有办法在不创建新的 ViewC
有谁知道是否可以在 iPad 上为 UIPopOverController 设置透明背景? 我想在弹出框内放置一个半透明 View (因此希望弹出框本身具有透明背景)。 我认为这是不可能的……但我很想
如何“执行选择器”到uipopovercontroller的parentviewcontroller? 我有从uiviewcontroller中解放出来的uipopovercontroller,这个u
希望有办法做到这一点。希望只显示 View 周围的边框,顶部没有 40px 标题栏。可能吗? 最佳答案 已回答...我正在使用导航 Controller 初始化它。一旦我删除了它,我就没有得到标题栏。
我有一个通用应用程序。在 iPad 上,当按下注释图钉时,它会显示标注气泡。当我按下关闭按钮时,它会加载一个带有详细 View 的 uipopovercontroller。我想知道的是如何加载 uip
我想知道如何制作一个没有箭头的 UIPopoverController事实上我想模拟这样的事情: 看看 没有箭头 有一个标题以某种方式位于 UIPopoverController 的扩展顶部边框内部,
我有一个显示表格的 UIPopoverController。我使用 PresentFromBarButtonItem 方法。 我怎样才能给弹出窗口显示一个标题,UISpliter 做了多少列表? 最佳
我有一个问题,this question 的回答最多。 . 但是,我的任务略有不同。我想将 UIImageViews 从 UIPopover Controller 拖放到另一个 UIView,但弹出框
我正在以这种方式创建一个弹出框: popoverController = [[UIPopoverController alloc]initWithContentViewController:brows
我有一个 UIPopoverController由 TableView 组成。这个弹出式 Controller 显示得很好,我已经设置了委托(delegate) didSelectRowAtIndex
是否可以从第一个弹出窗口 UIButton 单击打开另一个 uipopovercontroller?如果是,那我该怎么做? 现在我正在使用给定的代码从 UIBarButtonItem 打开一个弹出窗口
我正在窗口内切换 View 。方向有时会混淆。 在其中一个窗口中,当我尝试显示应附加到工具栏按钮的弹出窗口时,它显示在屏幕上的位置。如果我物理地改变设备的方向,弹出窗口会在正确的位置重绘。如果我再次切
iOS 9 中 PopoverController 的正确代码是什么?在任何地方都可以找到此代码的正确代码? @IBAction func share(发送者:UIBarButtonItem){
我有一个普通的 UIPopoverController,它是这样制作的: -(IBAction)btKBIs_click:(id)sender { if(kbiPopOver != NULL)
我有一个按钮,当按下它时会显示一个 View Controller ,这是一个通用应用程序。 在 iPhone 上, View Controller 被推送到导航堆栈上。在 iPad 上,它显示在弹出
在 iOS 7 中,UIPopoverControllers 具有视差效果(前景悬停在背景之上)。 这在处于纵向模式的 UISplitViewController 中尤其难看。 线条不在同一水平面上。
我知道 UIPopOverController 可以提供标准下拉菜单,但我很好奇它是否可以提供动态下拉菜单。 动态下拉菜单将更进一步,单击列表中的任何项目都可以展开更多选项或执行某些其他操作,类似于文
我发现在呈现 UIPopoverController 时,并非呈现 View 中的所有控件都被禁用。具体来说,导航栏按钮(例如“后退”)仍然可选。我认为这是一个缺陷 - 它允许弹出窗口保留在屏幕上,而
我是一名优秀的程序员,十分优秀!