【问题标题】:How to determine if a UITableViewCell is being dragged?如何确定是否正在拖动 UITableViewCell?
【发布时间】:2012-02-25 05:02:30
【问题描述】:

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

【问题讨论】:

    标签: ios cocoa-touch uitableview ios5 uikit


    【解决方案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 委托方法中设置背景。

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

        希望对你有帮助!

        【讨论】:

          猜你喜欢
          • 2011-07-30
          • 2016-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-31
          相关资源
          最近更新 更多