iPhone界面为啥会覆盖

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iPhone界面为啥会覆盖相关的知识,希望对你有一定的参考价值。

参考技术A 上述问题在android端没有问题,只是在iphone中出来的。
图片中底部导航元素和扫码图标都是用position:fixed定位的,打开页面滑动到底部,继续向上滑动时,浏览器的背景就被带着向上滚动,并且会覆盖上面说的固定定位的元素。最近在适配ios15 时发现,之前正常显示的页面在更新之后都被导航栏盖住了,或者说页面内容延伸了。网上也查了很多,找到一个有用的解决方案。

把edgesForExtendedLayout值设为UIRectEdgeNone, 也就是不让view延伸到整个屏幕

为啥 UIButton 会覆盖 UITapGestureRecognizer?

【中文标题】为啥 UIButton 会覆盖 UITapGestureRecognizer?【英文标题】:Why is a UIButton is overriding UITapGestureRecognizer?为什么 UIButton 会覆盖 UITapGestureRecognizer? 【发布时间】:2010-09-30 23:41:49 【问题描述】:

我有一个带有 2 个子视图的父 UIView:一个 UIButton 和一个实现了 UITapGestureRecognizer 的 UIScrollView。 UITapGestureRecognizer 用于放大和缩小滚动视图,按钮用于显示/隐藏一些文本。

我的问题是,一旦我使用了 UIButton,UITapGestureRecognizer 就不再起作用了。

另外,UITapGestureRecognizer 是在 scrollView 的类中实现的,这是正确计算 zoomScale 所必需的。

我发现了一些类似的问题,但他们遇到了相反的问题。 有什么想法吗?

谢谢!

编辑:我刚刚意识到,使用按钮后,如果我在 scrollView 中滚动或捏合/缩放然后点击,它会再次起作用。它只是在使用按钮后无法立即工作。

另外,这里是按钮如何显示文本视图的代码:

- (void)textImageButtonAction:(id)sender
    if(self.textView.frame.origin.y < 0)
        [UIView beginAnimations:@"HideTabbar" context:nil];
        [UIView setAnimationDuration:.3];
            textView.frame = CGRectMake(0.0, 0.0, self.view.frame.size.width, footerStringSize.height +10);
        [UIView commitAnimations];
    
    else if(self.textView.frame.origin.y == 0) //If the textView is visible
        [UIView beginAnimations:@"HideTabbar" context:nil];
        [UIView setAnimationDuration:.3];
            textView.frame = CGRectMake(0, -footerStringSize.height -10, self.view.frame.size.width, footerStringSize.height +10);
        [UIView commitAnimations];
    
 

【问题讨论】:

该按钮用于在另一个滑入滑出的 subView 中显示/隐藏一些文本。 子视图如何显示和删除。这可能是你的问题。贴出代码。 我添加了上面的代码。我只是在编辑 textView 的框架。文本视图是在 viewDidLoad 方法中创建的。 【参考方案1】:

您是否应该在按钮完成其职责后辞去第一响应者的职务,以使按钮所在的视图不再受控制。

如何添加: 把SubviewtoFront:scrollview

到您的 UIButton 代码的末尾。这里的想法是让你的滚动视图成为最重要的视图;这就是我认为当您触摸滚动视图并因此重新激活手势识别器时发生的情况

【讨论】:

我也是这么想的。但它不起作用。我尝试添加 [textImageButton resignFirstResponder];在 textImageButtonAction 的末尾没有任何效果。 将子视图放在前面只是隐藏按钮并且不会重新激活手势识别器。我也试过打电话:[self scrollViewDidScroll:myScrollView];但这也不起作用。【参考方案2】:

你有没有试过打电话给[scrollView becomeFirstResponder]?那应该可以正常工作。

【讨论】:

是的,没有任何区别。不过感谢您的建议。 我在使用模态视图时遇到了类似的问题。您是否以模态方式呈现滚动视图?【参考方案3】:

我终于为此问题寻求 Apple 开发人员技术支持,他们查看了我的代码。问题的原因原来是不同类别中的手势识别器冲突。这是一个第一响应者问题,但由于某种原因,resignFirstResponder 和 becomeFirstResponder 没有任何效果。

我必须重新构建代码以及如何组织手势识别器以使其正常工作。

感谢大家的帮助。

【讨论】:

以上是关于iPhone界面为啥会覆盖的主要内容,如果未能解决你的问题,请参考以下文章

关于 iPhone 视图控制器机制的问题(即解释为啥会崩溃)

为啥 iPad 不会在结束编辑时关闭选择器视图但 iPhone 会

iPhone:向 Cell ContentView 添加子视图会在滚动时覆盖单元格文本

为啥 CSP 安全标头会阻止 Iphone 上的谷歌地图?

为啥有些游戏在 iPhone 重新安装时会自动继续进行?

iPhone - 用另一个模态视图覆盖模态视图