如何确定是否正在拖动UITableViewCell?

时间:2012-02-25 05:02:30

标签: ios cocoa-touch uitableview ios5 uikit

我想知道是否正在拖动一个单元格(当UITableView处于编辑模式时,通过右侧的夹点)。我希望在它处于该状态时更改背景。

4 个答案:

答案 0 :(得分:0)

我不知道框架中是否可行。但如果不是,你可以尝试在UITableViewCell子类中覆盖touchMoved方法吗?

然后,您可以在UItableViewCell的自定义子类中检索tableView的状态(编辑与否)。

答案 1 :(得分:0)

有可能,是的!

在ViewController.h中

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UIScrollViewDelegate>
{
    IBOutlet UITableView * myTable;
    IBOutlet UIScrollView * myScroll;
}

在ViewController.m中

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    myScroll = myTable;
    myScroll.delegate = self;


}

#pragma Mark UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"%f",scrollView.contentOffset.y);
}

就是这样。

答案 2 :(得分:0)

遗憾的是没有回调,但由于默认行为是调整UITableViewCell的'alpha'值,您可以在UITableViewCell子类的' - (void)layoutSubview'中检查它。

- (void)layoutSubviews
{
    [super layoutSubviews];
    if (self.alpha < 0.99) {
        // we are most likely being dragged
    } else {
        // restore for not being dragged
    }
}

请注意,这有点像黑客。我注意到当表视图的separatorStyle设置为'UITableViewCellSeparatorStyleNone'时,这不起作用。

答案 3 :(得分:0)

可能是的!但是你必须在视图控制器中自己跟踪状态。定义一个成员     BOOL tableDrag = NO; 在方法中     scrollViewWillBeginDragging 你设置tableDrag = YES;并在方法中     scrollViewDidEndDragging 你设置tableDraw = NO;

现在,在scrollViewDidScroll委托方法中,您可以设置背景。

如果您有多个滚动条,则标记滚动视图,以便您知道正在拖动哪个。

希望它有所帮助!