【问题标题】:UIButton inside UIScrollView delay when tap点击时 UIScrollView 内的 UIButton 延迟
【发布时间】:2016-09-07 15:58:35
【问题描述】:

我是 swift 新手,创建时遇到问题

我正在使用 swift 2 XCode 7

我在滚动视图的底部有一个按钮来提交我放在上面的所有文本字段,但是当我点击按钮时,我必须按住几秒钟才能点击按钮。我在几个网络上搜索了一个解决方案,有一个解决方案说未选中 Delays Content Touches 但我的滚动视图变得太难滚动所以我检查了另一个解决方案说创建一个自定义滚动视图,但是在我创建它之后,我可以不要点击我的按钮。

这是我找到的几个网站,但没有一个工作

UIButton touch is delayed when in UIScrollView

UIButton not showing highlight on tap in iOS7 - Swift

Subclass UIScrollView in Swift for touches Began & touches Moved

请给我一些关于如何解决此问题的示例的提示

感谢任何帮助

【问题讨论】:

  • 可能您的按钮超出了滚动视图的范围,因此只需为所有视图设置背景颜色以进行测试并将按钮剪辑保持在边界范围内 = YES
  • @PKT 我认为不是我的按钮越界而是问题本身来自 UIScrollView

标签: ios swift uiscrollview uibutton touchescancelled


【解决方案1】:

如果按钮位于表格视图的底部,您始终可以添加一行,其中包含一个充当按钮的单元格。或者将按钮添加到 tableview 页脚。

【讨论】:

  • 我使用的是 UIScrollView 而不是 TableView 那么如何在底部添加 UIButton ?如果我分开框架,我的 ScrollView 是手机中的框架未满
  • 哦抱歉,不知何故我认为这是一个表格视图......一定是我思维过程的一次迭代。
【解决方案2】:

解决这个问题的最好方法是将按钮和滚动视图框架分开。并且操作系统不会检查触摸事件是针对按钮还是针对滚动视图。

更新:

我想知道您的按钮是滚动视图的子视图。因为我测试了这个视图层次结构并没有得到你的问题:

更新 2: 你也可以像上面那样做。同时,您应该在滚动视图滚动时移动该按钮。这看起来就像他们在一起。

另一个解决方案是改变响应链。您可以在- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 的UIView 中获得热门事件。如果该点在按钮的框架中,您应该点击测试按钮并返回该结果。像这样:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    if (!self.clipsToBounds && !self.hidden && self.alpha > 0.01) {
        CGPoint point = [button convertPoint:point fromView:scrollView];
        if (button frame contains point) {
            UIView *result = [button hitTest:point withEvent:event];
            if (result != nil) {
                return result;
            }
        } else {
            // hit the scroll view area outside button
        }
    }

    return nil;
}

【讨论】:

  • 分离框架使我的ScrollView框架在手机中没有满,还有其他方法可以让它工作吗?
  • @Dirus 我对此进行了测试并发现了一些东西,这是我的更新。
  • 我的意思是这样的i.imgsafe.org/1365e0b.png 在应用程序中,框架被二除,我的所有表单只显示一半
  • @Dirus 更新了我的答案。我没有对此进行测试,所以也许它不会起作用。但我相信它会给你一些想法。
猜你喜欢
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
相关资源
最近更新 更多