自从过去 3 到 4 个小时以来,我一直在研究它,但我没有得到任何信息。我的问题是我想对 UIViewController 的某些部分启用 userInteraction。
描述:
我有一个 UIViewController。我添加了 30 个 tableviews。我在应用程序中存储了一个值。如果该值为 1,则我必须仅为 tableview1 启用用户交互,如果该值为 2,则仅 tableview2 ......等等
.如果我不清楚,请告诉我。感谢您花费宝贵的时间。提前致谢
最佳答案
一个简单的方法是继承 UIView 并覆盖 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
。
对于您希望 subview 忽略触摸的 UIView 部分(在示例中表示为 ignoreRect
)返回 NO。
@interface InteractionView ()
@property (nonatomic) CGRect ignoreRect;
@end
@implementation InteractionView
- (void)awakeFromNib {
self.ignoreRect = CGRectMake(0.0f, 0.0f, 300.0f, 300.0f);
}
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
if (CGRectContainsPoint(self.ignoreRect, point)) {
return NO;
}
return [super pointInside:point withEvent:event];
}
@end
如果您需要对预期行为进行更多调整:例如返回特定区域的特定 View ,返回特定区域的顶 View ,...您可以使用
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if (CGRectContainsPoint(self.ignoreRect, point)) {
return nil; // Edit that part if you want to return a chosen view
}
return [super hitTest:point withEvent:event];
}
关于ios - 对 UIViewController 的某些部分启用 UserInteraction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35359432/