WKInterfaceTable中的WKLongPressGestureRecognizer

时间:2019-01-14 14:58:23

标签: swift watchkit

我正在尝试向WKLongPressGestureRecognizer中的单元格添加WKInterfaceTable。但这行不通。永远不会触发IBAction。 有什么我想念的技巧吗?还是在watchOS上根本不支持此功能?

interface builder

1 个答案:

答案 0 :(得分:1)

如果有帮助的话...我一直在努力奋斗,并努力做到: 在屏幕快照的“表格”下附加“长按手势识别器”,而不是“组”,并在WKInterfaceController中链接到动作:

- (IBAction)didLongPress:(id)sender
{
if ([sender isKindOfClass:[WKLongPressGestureRecognizer class]])
    {
    WKLongPressGestureRecognizer * item=(WKLongPressGestureRecognizer *)sender;
    CGPoint p=[item locationInObject];
    NSLog(@"long press point: %f , %f. state=%d\n",p.x,p.y,[item state]);
    }
}

这不是最终解决方案,但是至少确实触发了该操作。不幸的是,当触发时,它会阻止didSelectRowAtIndex通过,因此要弄清楚哪一行被长按并不容易。对于进展,我最好的想法是使用p.y值确定长时间按下表中的哪一行。我一直在尝试找出如何以编程方式确定行高或将位置转换为对象的方法,但到目前为止却失败了,所以由于我实在不想对代码进行硬编码,因此我暂时放弃了此功能。行高。但是也许它使其他人更接近解决方案,或者适合可以安全地对行高进行硬编码的情况:)

我尝试过(失败)的其他路线,但可能是其他路线的起点(或节省一些时间):

  • 试图取消长按,所以我仍然可以进行行选择(但是我可以记录到我们已经按下了长按,因此可以采取相应措施)。不幸的是我看不到该怎么做。我尝试过[item setEnabled:false];但它并没有取消当前的长按。它只是阻止了所有未来的长按被认可。
  • 我以编程方式查找了附加手势,以防比使用情节提要更好的控制。我一无所获,研究表明,iOS仅支持此功能,而WatchOS不支持。
  • 按照发布的问题附加手势。我也看不到任何动作代码被称为:(