use*_*888 5 objective-c uitableview ios
UITablaView我的Objective C应用程序中有一个.我有自定义单元格标签和UIImageView.我想禁用部分行,以便didSelectRowAtIndexPath在用户单击此行的部分时禁用.
我要这个:
可能吗?
这是我能想到的简单而最优雅的解决方案.
我相信你必须有一个CustomCell,它将IBOutlet保存到左侧的imageView :)你可以利用hitTest方法来解决你的问题:)
在你的CustomCell中让我们假设它是MyTestCell类写的,
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.myImageView.frame.contains(point) {
return nil
}
return super.hitTest(point, with: event)
}
Run Code Online (Sandbox Code Playgroud)
其中myImageView是你单元格左侧的imageView的IBOulet :)
我正在做的就是检查用户点击的位置,如果触摸点位于单元格框架中,则返回nil作为视图.当你返回nil touch事件时,会停止传播到其父视图,最后永远不会到达单元格因此didSelectRowAtIndexPath从未调用过,
另一方面,您应该将触摸切换到下一个视图,只需在其superiOS 上调用相同的方法,最终将其追溯到单元格和触发器didSelectRowAtIndexPath
希望能帮助到你 :)
您可以使用一个简单的技巧(无需编写代码)来解决此问题,方法是添加一个按钮来覆盖您想要禁用其选择的部分。显然,按钮不应该有任何文本或背景颜色(它应该是透明颜色),还要确保添加适当的约束以确保覆盖单元格的所需部分。
因此,当点击按钮时,不应发生任何事情,也不didselectRow应被调用,因为实际的触摸事件应引用按钮,而不是行。
希望这有帮助。