【问题标题】:Should "clickable" areas in iOS be buttons?iOS中的“可点击”区域应该是按钮吗?
【发布时间】:2012-09-12 06:46:57
【问题描述】:

iOS 中的“可点击”区域应该是按钮,还是可以只使用通用的 UIView、UIImage 等?

假设我有一个带有图标、边框、阴影等的文本块。它看起来像一个广告牌。实现它的最佳方法是什么?使用自定义 UIButton 并为其添加子视图或仅创建通用 UIView?

任何想法表示赞赏!

【问题讨论】:

    标签: ios


    【解决方案1】:

    您可以简单地将UIGestureRecognizers 添加到您的UIView 并处理它们。您可以找到文档here 和教程here

    【讨论】:

    • 太棒了。捕捉事件的原始流程!挖吧。
    【解决方案2】:

    可能对于包含多个子视图的视图,您希望使用UIView 子类。虽然UIButton 可以用于添加视图,但状态更改、启用/禁用可能会对整个视图(包括子视图)造成不稳定的影响。使用您自己的 UIView 子类将确保显示的内容不会被任何状态更改所影响,从而让您完全控制。你可以覆盖

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    

    拦截对您的自定义视图的触摸。如果您要这样做,请记住 userInteractionEnabled 字段必须设置为 true。

    附加说明:您提到阴影是您问题中的元素之一。如果您使用CALayer 来执行此操作,绝对避免使用 UIButton,因为它处理不同状态的层集非常复杂。

    【讨论】:

      【解决方案3】:

      如果目标区域足够大,您可以在可点击视图的顶部放置一个透明的 UIButton(将按钮类型切换为自定义,但不提供图像)以拦截点击。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        相关资源
        最近更新 更多