UIScrollView inside UITableViewCell touch detect

后端 未结 5 1491
清歌不尽
清歌不尽 2020-12-04 20:16

I have a tableview with 8 custom cells. in the 8th cell I added a scrollView with paging enabled so I can show page 1 and page 2 (or 3, 4... 10) without have a very high cel

5条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-04 20:42

    Solved subclassing both uitableviewcell and uiscrollview.

    It worked for my needs. Hope it can help.

    Max


    myScrollView.h

    
    #import 
    @interface myScrollView : UIScrollView {
    }
    
    @end
    
    

    myScrollView.m

    
    #import "myScrollView.h"
    @implementation myScrollView
    
    
    - (id)initWithFrame:(CGRect)frame {
    
        return [super initWithFrame:frame];
    }
    
    - (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
    {   
        NSLog(@"touch scroll");
        // If not dragging, send event to next responder
        if (!self.dragging) 
            [self.nextResponder touchesEnded: touches withEvent:event]; 
        else
            [super touchesEnded: touches withEvent: event];
    }
    

    myCell.h

    
    #import 
    
    
    @interface myCell : UITableViewCell {
    
    }
    
    @end
    

    myCell.m

    
    
    #import "myCell.h"
    
    
    @implementation myCell
    
    
    - (id)initWithFrame:(CGRect)frame {
    
        return [super initWithFrame:frame];
    }
    
    - (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
    {   
        NSLog(@"touch cell");
        // If not dragging, send event to next responder
        [super touchesEnded: touches withEvent: event];
    }
    

    RootViewController.h

    
    
    #import 
    
    @class myCell;
    @class myScrollView;
    
    @interface RootViewController : UITableViewController {
    
        myCell *cell;
        myScrollView *scrollView;
    }
    
    @end
    

    RootViewController.m

    
    
    #pragma mark -
    #pragma mark Table view data source
    
    // Customize the number of sections in the table view.
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
    }
    
    
    // Customize the number of rows in the table view.
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return 3;
    }
    
    
    // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        static NSString *CellIdentifier = @"Cell";
    
        // my custom cell
        cell = [[myCell alloc] init];
        if (cell == nil) {
            cell = [[[myCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }
    
    
        // the custom scroll view
        scrollView = [[myScrollView alloc] initWithFrame:cell.frame];
        scrollView.contentSize = CGSizeMake(640, 40);
        [cell.contentView addSubview:scrollView];
    
        //something to add in scrollView
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 150, 20)];
        label.text = @"some text";
        [scrollView addSubview:label];
    
        // Configure the cell.
    
        return cell;
    }
    

提交回复
热议问题