1

所以,

我的应用程序中有一个按钮,按住该按钮时,它将记录来自相机的帧。释放按钮时,处理输出。视频也有最多 10 秒的时间 - 所以在那之后它无论如何都应该处理视频。

我遇到的问题是用户能够继续按住按钮(如果他们稍后释放它,它将触发完成事件) - 是否有强制释放按钮?

4

3 回答 3

0

您可以使用[self performSelector:@selector(functionThatTakesOneArgument:) withObject:myArgument afterDelay:10];延迟后执行某些功能。因此,如果您将其插入到您的按钮按下代码中,您可以调用任何功能来完成您的工作。

您还将调用functionThatTakesOneArgument:按钮向上事件,因此您可能需要检查它是否不会发生两次。

于 2013-05-24T17:15:34.070 回答
0

您可以使用UIControlEventTouchDown,UIControlEventTouchUpInsideUIControlEventTouchCancel事件,您可以在 startRecording 方法中添加计时器:

[button addTarget:target action:@selector(startRecording:) forControlEvents:UIControlEventTouchDown]

[button addTarget:target action:@selector(endRecording:) forControlEvents:UIControlEventTouchUpInside]

如果要取消按钮上的触摸事件,请使用:

// Call this if you wish to cancel the event tracking
[button cancelTrackingWithEvent:nil];
于 2013-05-24T18:15:38.390 回答
-1

从视图中移除 UIButton 会导致所有触摸事件取消。考虑一下:

用户按下按钮并保持。当他们第一次开始按下时,呼叫

[self performSelector:@selector(endRecording) withObject:nil afterDelay:10];

其中 endRecording 定义如下:

- (void)endRecording {
    if ( [ record_button isHighlighted ] ) {
        [record_button removeFromSuperView];
        [self.view addSubview:record_button];
        // TODO: Finish recording
    }
}
于 2013-05-24T18:05:36.553 回答