如何确定是不是正在拖动 UITableViewCell?
Posted
技术标签:
【中文标题】如何确定是不是正在拖动 UITableViewCell?【英文标题】:How to determine if a UITableViewCell is being dragged?如何确定是否正在拖动 UITableViewCell? 【发布时间】:2012-02-25 05:02:30 【问题描述】:我想知道是否正在拖动单元格(当 UITableView 处于编辑模式时,通过右侧的夹点)。我想在它处于该状态时更改背景。
【问题讨论】:
【参考方案1】:不幸的是,没有回调,但由于默认行为是调整 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' 时,这不起作用。
【讨论】:
【参考方案2】:我不知道这在框架中是否可行。但如果不是,您可以尝试在 UITableViewCell 子类中覆盖 touchMoved 方法吗?
然后,您也许还可以在 UItableViewCell 的自定义子类中检索 tableView 的状态(是否正在编辑)。
【讨论】:
【参考方案3】:有可能,是的!
在 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);
就是这样。
【讨论】:
无论何时滚动表格视图,无论是否拖动单元格,都会调用它。【参考方案4】:有可能是的!但是您必须自己在视图控制器中跟踪状态。定义成员 布尔表拖动 = 否; 在方法中 scrollViewWillBeginDragging 你设置 tableDrag = YES;并且在方法中 scrollViewDidEndDragging 你设置 tableDraw = NO;
现在可以在 scrollViewDidScroll 委托方法中设置背景。
如果您有多个滚动条,则标记滚动视图,以便您知道哪个滚动条正在拖动。
希望对你有帮助!
【讨论】:
以上是关于如何确定是不是正在拖动 UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章
jQuery UI Sortable 将拖动对象的类添加到占位符以确定大小