ios - 对 UIViewController 的某些部分启用 UserInteraction

标签 ios objective-c swift

自从过去 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/

相关文章:

ios - UIPickerView 在将内容加载到选择器后更改内容文本大小

ios - UIViewPropertyAnimation Objective C 问题

ios - 加载 UICollectionViewCell Swift 4 时单元格闪烁问题

ios - git reset --hard HEAD ^后如何恢复 Storyboard ?

ios - prepareForSegue 中的分配 false

iphone - 自动升级 iOS 应用

objective-c - 在文本文件中写入 NSMutableArray

ios - 方法不会将接收到的 JSON 对象保存到数组中

ios - 如何在 Swift 中发出 HTTP 请求?

ios - 在 swift 中为所有出现的字符串着色