PHBNonInteractableViews 1.0.0

PHBNonInteractableViews 1.0.0

Phlippie Bosman 维护。



  • 作者
  • Phlippie Bosman

PHBNonInteractableViews

重写 hitTest 以将交互传递给父视图的 UI*View 子类

isUserInteractionEnabled 与 hitTest

实际应用中有些交互要求可能相当棘手。

例如,考虑一个卡片样式的单元格。当用户点击卡片时,应用程序应当导航到某个位置。该卡片有一些子视图(如图片、标签等),不应干扰卡片整体的交互性。但卡片底部还有一个按钮,当点击这个按钮时,应当关闭卡片。

在这种情况下,将容器视图(如用于布局的堆叠视图)的 isUserInteractionEnabled 设置为否似乎是一种诱人的解决方案,但实际上这种做法是危险的。这样做可能会使得卡片的子视图默认不可交互,并阻止子视图截获本该传递给卡片的点击事件。但实际情况是,子视图不仅会默认变得不可交互,而且没有办法使其中的按钮变回可交互状态。

实际的解决方案是从容器视图派生一个子类,并重写 hitTest 方法,以便将交互传递给父类。

此库提供了重写 hitTest 的一些常见 UIView 类型的子类。

安装

Cocoapods

PHBStackLayout可通过CocoaPods获取。要安装,只需将以下行添加到Podfile中:

pod 'PHBNonInteractableViews'

要运行示例项目,首先克隆仓库,然后从示例目录中运行pod install

作者

phlippieb,[email protected]

许可证

PHBStackLayout采用MIT许可证。有关更多信息,请参阅LICENSE文件。