【发布时间】:2012-02-25 05:02:30
【问题描述】:
我想知道是否正在拖动单元格(当 UITableView 处于编辑模式时,通过右侧的夹点)。我想在它处于该状态时更改背景。
【问题讨论】:
标签: ios cocoa-touch uitableview ios5 uikit
我想知道是否正在拖动单元格(当 UITableView 处于编辑模式时,通过右侧的夹点)。我想在它处于该状态时更改背景。
【问题讨论】:
标签: ios cocoa-touch uitableview ios5 uikit
不幸的是,没有回调,但由于默认行为是调整 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' 时,这不起作用。
【讨论】:
我不知道这在框架中是否可行。但如果不是,您可以尝试在 UITableViewCell 子类中覆盖 touchMoved 方法吗?
然后,您也许还可以在 UItableViewCell 的自定义子类中检索 tableView 的状态(是否正在编辑)。
【讨论】:
有可能,是的!
在 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);
}
就是这样。
【讨论】:
有可能是的!但是您必须自己在视图控制器中跟踪状态。定义成员 布尔表拖动 = 否; 在方法中 scrollViewWillBeginDragging 你设置 tableDrag = YES;并且在方法中 scrollViewDidEndDragging 你设置 tableDraw = NO;
现在可以在 scrollViewDidScroll 委托方法中设置背景。
如果您有多个滚动条,则标记滚动视图,以便您知道哪个滚动条正在拖动。
希望对你有帮助!
【讨论】: