所以,
我的应用程序中有一个按钮,按住该按钮时,它将记录来自相机的帧。释放按钮时,处理输出。视频也有最多 10 秒的时间 - 所以在那之后它无论如何都应该处理视频。
我遇到的问题是用户能够继续按住按钮(如果他们稍后释放它,它将触发完成事件) - 是否有强制释放按钮?
所以,
我的应用程序中有一个按钮,按住该按钮时,它将记录来自相机的帧。释放按钮时,处理输出。视频也有最多 10 秒的时间 - 所以在那之后它无论如何都应该处理视频。
我遇到的问题是用户能够继续按住按钮(如果他们稍后释放它,它将触发完成事件) - 是否有强制释放按钮?
您可以使用[self performSelector:@selector(functionThatTakesOneArgument:) withObject:myArgument afterDelay:10];
延迟后执行某些功能。因此,如果您将其插入到您的按钮按下代码中,您可以调用任何功能来完成您的工作。
您还将调用functionThatTakesOneArgument:
按钮向上事件,因此您可能需要检查它是否不会发生两次。
您可以使用UIControlEventTouchDown
,UIControlEventTouchUpInside
和UIControlEventTouchCancel
事件,您可以在 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];
从视图中移除 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
}
}