如何响应UIImagePickerController生成的UIAlertView

时间:2013-07-09 06:50:46

标签: ios uiimagepickercontroller uialertview

我正在使用UIImagePickerController从我的应用程序中捕获视频,并且我已将视频最长持续时间设置为30秒。达到30秒限制时。我收到一条警告,上面写着“达到最大视频录制限制”由UIImagePickerController生成,并且它会停止捕获视频。

我想要的是我想要响应达到30秒限制时自动生成的警报。我想在按下该警报的“确定”按钮时执行某些操作。我已经实现了UIAlertView的所有委托方法,但是当我按下OK按钮时它会以任何方式出现。

请帮助我如何回复该警报?

4 个答案:

答案 0 :(得分:2)

您无法使用所有这些委托方法,因为您没有启动UIAlertView,因此您无法设置其委托......

我唯一能想到的就是做一些事情,比如听UIWindowDidBecomeVisibleNotification来检测何时显示警报,然后通过UIWindowDidBecomeHiddenNotification通知来检测它什么时候消失。

您应该知道这些通知会触发所有使用UIWindow UIActionSheet {{1}}的组件,例如{{1}}或键盘,因此您需要确保这是正确的(也许请检查查看其中一个子视图中是否有UIAlertView ..)

答案 1 :(得分:1)

将自己设置为UIImagePickerController的代理人,并实施UIImagePickerControllerDelegate协议。具体来说,有以下方法:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)

答案 2 :(得分:-1)

使用UIAlertViewDelegateProtocol

表单文档

  

alertView:clickedButtonAtIndex:

     

用户发送给代理人   单击警报视图上的按钮。

     
      
  • (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex参数alertView   包含按钮的警报视图。 buttonIndex按钮的索引   被点击了。按钮索引从0开始。讨论   调用此方法后,接收器将自动关闭。
  •   
     

可用性适用于iOS 2.0及更高版本。在UIAlertView.h中声明

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0)
    {
        // do stuff for button index 0,ie cancel button and sthe same for other button  indeces
    }
}

答案 3 :(得分:-3)

请参阅本教程:http://mobile.tutsplus.com/tutorials/iphone/uialertview/您可以更加理想:

UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Hello World!"
                                                  message:@"This is your first UIAlertview message."
                                                 delegate:self
                                        cancelButtonTitle:@"Button 1"
                                        otherButtonTitles:@"Button 2", @"Button 3", nil];
[message show];


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
    if([title isEqualToString:@"Button 1"])
    {
        NSLog(@"Button 1 was selected.");
    }
    else if([title isEqualToString:@"Button 2"])
    {
        NSLog(@"Button 2 was selected.");
    }
    else if([title isEqualToString:@"Button 3"])
    {
        NSLog(@"Button 3 was selected.");
    }
}