fuzigiwa2
@fuzigiwa2 (義将 藤極)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

UIViewでのタッチイベントが通知されない

UITableViewクラスの画面にUITableViewCellクラスをallocし、
UITableViewCellクラス内の処理でUIViewクラスの画像をallocし、それに対してタッチイベントの処理をおこなうとしているのですが、
touchesEndedが呼ばれません。
以下がコードの一部となります。

// UITableViewクラス:PhotoListViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];
    if (self.tableView == nil) {
        self.tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
        self.tableView.backgroundColor = BODY_COLOR;
        self.tableView.translatesAutoresizingMaskIntoConstraints = NO;
        if (@available(iOS 11.0, *)) {
            self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic;
        } 
        [self.tableView.layer setBorderColor:LOG_COLOR.CGColor];
        [self.tableView.layer setBorderWidth:4.0f];
        self.tableView.delegate = self;
        self.tableView.dataSource = self;
        [self.view addSubview:self.tableView];
    }
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

    self.tableView.userInteractionEnabled = YES;
    self.view.userInteractionEnabled = YES;

    //savebutton
    CGRect frame = saveBarController_.view.frame;
    frame.origin.y = self.tableView.frame.size.height;
    saveBarController_.view.frame = frame;
    [self.view addSubview:saveBarController_.view];

    PRINT_RECT(saveBarController_.view.frame);

    [self.tableView reloadData];

    PBDataManager *manager = [[[PBDataManager alloc]init] autorelease];
    [manager save:nil];
}

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"cell";

    ThumbnailCell *cell = (ThumbnailCell *)[aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[ThumbnailCell alloc]init]autorelease];
    }

    [cell setThumbnail:[thumbnailManager_ thumbnailAtRow:indexPath.row]];
    cell.backgroundColor = [UIColor clearColor];
    return cell;
}
// UITableViewCellクラス:ThumbnailCell.m
- (id)init
{
    self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];

    if (self) {
        self.selectionStyle = UITableViewCellSelectionStyleNone;
        thumbnailViews_ = [[NSArray arrayWithObjects:
                        [[[ThumbnailView alloc]init]autorelease]
                        ,[[[ThumbnailView alloc]init]autorelease]
                        ,[[[ThumbnailView alloc]init]autorelease]
                        ,[[[ThumbnailView alloc]init]autorelease]
                        ,nil]retain];
        int count = 1;
        int margin = 4;
        int width = 75;

        for (ThumbnailView *thumb in thumbnailViews_) {
            thumb.frame = CGRectMake(count * margin + (count-1) * width, 4, 75, 75);
            thumb.autoresizingMask = 0;
            thumb.userInteractionEnabled = YES;
            [self addSubview:thumb];
            count++;
        }
    }
    return self;
}

// UIViewクラス:ThumbnailView.m
- (id)init
{
    self = [super initWithFrame:CGRectMake(0, 0, 75, 75)];
    if (self) {
        [self setupLayer];
    }
    return self;
}
- (void)setupLayer
{
    imageLayer_ = [[UIImageView alloc]initWithFrame:self.bounds];
    imageLayer_.frame = self.bounds;
    videoLayer_ = [[UIImageView alloc]initWithFrame:self.bounds];
    videoLayer_.frame = self.bounds;
    duration_ = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 40, 15)];
    duration_.backgroundColor = [UIColor clearColor];
    duration_.frame = CGRectMake(30, 60, 40, 15);
    [self addSubview:imageLayer_];
    [self addSubview:videoLayer_];
    [self addSubview:duration_];
}

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// タッチイベントが通知されません
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// タッチイベントが通知されません
}

- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// タッチイベントが通知されません
}

- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// タッチイベントが通知されません
}

こちら2016年ごろの古いプロジェクトのコードであり、現在のOSで動かした際にタッチイベントが通知されません
iPhone5:iOS10.3.4
の端末では上記コードでタッチイベントの通知を受け取るのに対し、
iPad(第7世代):iOS15.1
の端末ではタッチイベントの通知を受け取りません。
こちら原因がわからず、どのように対応すればよろしいのでしょうか。

開発環境は
Xcode12.5
になります。

よろしくお願い致します。

0

1Answer

Your answer might help someone💌