Tag: 代表

AudioServicesPlaySystemSound知道声音何时停止

我在用着 AudioServicesPlaySystemSound(soundID); 发挥声音,但我需要知道什么时候声音已经停止播放,那么这是什么代表呢? 谢谢!

AVAssetResourceLoaderDelegate不被调用

我一直试图得到一些AVAssetResourceLoaderDelegate协议的消息,但它似乎永远不会被调用。 我已经validation了一切正在主线上发生; 从创buildAVURLAsset ,创buildAVPlayerItem ,创build委托,并将委托队列设置为主线程。 我正在尝试使用networking托pipe的MP4内容和未encryption的HLS内容。 我的声明: @property (readwrite, strong) AVPlayer* player; @property (strong) AVPlayerItem* playerItem; @property (strong) id<AVAssetResourceLoaderDelegate> resourceLoaderDelegate; 播放video的代码: AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; … self->_resourceLoaderDelegate = [[MyAssetResourceLoaderDelegate alloc] init]; [asset.resourceLoader setDelegate:self->_resourceLoaderDelegate queue:dispatch_get_main_queue()]; … self->_playerItem = [AVPlayerItem playerItemWithAsset:asset]; … [self setPlayer:[AVPlayer playerWithPlayerItem:self->_playerItem]]; 但是, resourceLoader:shouldWaitForLoadingOfRequestedResource:永远不会被调用(其他任何委托方法都不会)。 为了清楚起见,我使用iOS模拟器以及运行iOS 8的iPhone 5s进行testing(结果看起来完全相同)。 我已经validation了所有的代码正在主线程上执行,正如我在这个问题中读到的,一切都必须在同一个线程上。 有没有人有任何build议,或者也许是一些可用的代码实际被调用的源代码的引用? 更新:我已经确定,这个代码工作正常,当url是一个本地文件,但它仍然无法正常工作时,它是一个远程文件。 是预期的行为还是有办法我可以这样做的远程文件?

子类的代表?

我有一个叫做ToolbarView的类,它是UIView一个子类,基本上创build了一个消失/重新出现的UIToolbar的UIView 。 我还有一个名为DraggableToolbarView的ToolbarView的子类,它使用户能够在屏幕上拖动视图。 我需要为ToolbarView创build一个委托,以便在工具栏重新出现和消失时通知另一个对象/类。 我还需要为DraggableToolbarView创build一个委托,以便在拖动视图时通知另一个对象/类。 目前,我已经创build了一个单独的委托,但我想知道是否有一个更好的模式呢? 也许为ToolbarView实现一个委托,并将DraggableToolbarView的委托方法列为可选项? 或者有没有一种方法来委派一个委托? 什么是最好的/最干净的方式来完成这个?

委托方法不被称为客观的C

我想哟传递数据的两个textfields在secondViewController到ViewController和在ViewController中设置标签的文本。 但是传递数据的委托方法没有被调用。 我已经通过把断点检查它。 因此标签文本不会改变。 SecondViewController.h #import <UIKit/UIKit.h> @class SecondViewController; @protocol SecondViewDelegate <NSObject> -(void)getText1:(NSString*)str1 andText2:(NSString*)str2; @end @interface SecondViewController : UIViewController<UITextFieldDelegate> @property (weak, nonatomic) IBOutlet UITextField *textField1; @property (weak, nonatomic) IBOutlet UITextField *textField2; @property (weak) id<SecondViewDelegate>delegate; @end SecondViewController.m #import "SecondViewController.h" @interface SecondViewController () @end @implementation SecondViewController @synthesize delegate=_delegate; – (void)viewDidLoad { [super viewDidLoad]; self.textField1.delegate=self; self.textField2.delegate=self; [self.textField1 becomeFirstResponder]; […]

以编程方式触发摇动事件iOS

我如何以编程方式触发iOS中的摇动事件? 我试过以下,但它不断崩溃… + (void)shake { NSLog(@"TEST"); UIMotionEventProxy *m = [[NSClassFromString(@"UIMotionEvent") alloc] _init]; m->_subtype = UIEventSubtypeMotionShake; m->_shakeState = 1; [[[UIApplication sharedApplication] keyWindow] motionBegan:UIEventSubtypeMotionShake withEvent:m]; [[[UIApplication sharedApplication] keyWindow] motionEnded:UIEventSubtypeMotionShake withEvent:m]; } 在Hardware > Shake Gesture下的模拟器中,苹果有什么function?

即使在返回视图之后,委托方法也会被多次调用

我正在创build一个在iOS 7中使用新的条形码扫描器的应用程序,但是我在委托方法中遇到了一些问题。 扫描器能够正确识别条形码并调用委托方法,但是速度太快,所以调用会连续多次,导致多次执行。 下面的委托方法。 – (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection { connection.enabled = NO; self.conn = connection; for (AVMetadataObject *metadata in metadataObjects) { if ([metadata.type isEqualToString:AVMetadataObjectTypeEAN8Code] || [metadata.type isEqualToString:AVMetadataObjectTypeEAN13Code]) { self.strValue = [(AVMetadataMachineReadableCodeObject *)metadata stringValue]; NSLog(@"%@", [(AVMetadataMachineReadableCodeObject *)metadata corners]); } } [self performSegueWithIdentifier:@"newSegue" sender:self]; } 问题是,如果我没有在开始行中设置connection.enabled = NO ,则委托会被多次调用,导致视图层次结构被破坏(然后崩溃)。 另一个问题是,当我禁用连接,然后在viewWillAppear中使用self.conn = YES重新启用连接时,委托将在返回到视图时从先前的扫描中重复调用。 这会导致视图层次结构中的另一个损坏。 所以总结一下:无论是快速连续多次调用委托方法,还是在返回视图时都使用(旧)扫描调用委托。 […]

Swift通用类作为委托

在swift中使用generics类作为委托时遇到了一个问题。 例如我试图使用通用的NSFetchedResultsDelegate定义为: class FetchedTableController<T:NSManagedObject> : NSFetchedResultsControllerDelegate 在课堂上,我设置了NSFetchedResultsController并将代理设置为“self”。 但由于某种原因,委托方法从未被调用过。 当我删除类的generics部分,委托按预期调用: class FetchedTableController : NSFetchedResultsControllerDelegate 有没有解决scheme使用generics类作为委托?

iOS委托不能使用performSegueWithIdentifier?

我有两个控制器(第一,第二)在故事板,xcode 4.2。 第一个控制器有一个tableview并embedded导航控制器。 第二个控制器也有一个桌面视图,并embedded导航控制器(不同于第一个) 在first.h中: #import "second.h" … @interface first : UIViewController <secondDelegate, UITableViewDelegate, UITableViewDataSource> … 在first.m: – (IBAction)add:(id)sender // action when tapped a button on topbar { [self performSegueWithIdentifier:@"addSegue" sender:sender]; } …. – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([[segue identifier] isEqualToString:@"addSegue"]) { NSLog(@"delegated"); second *controller=[segue destinationViewController]; controller.delegate=self; } } – (void)callback { NSLog(@"Callback here"); } […]

自定义Google Sign In在GIDSignInDelegate协议上抛出exception

我正在用obj-c编写一个iOS应用程序,并使用Google SignIn SDK来执行Google SignInstream程。 我想能够自定义button和动作一点,所以我继续执行GIDSignInDelegate自己的协议基于他们的文档。 但它没有理由抛出和exception。 这是我的视图控制器的最小代码。 viewcontroller.m #import "ViewController.h" #import <FBSDKLoginKit/FBSDKLoginKit.h> @interface ViewController () @property (weak, nonatomic) IBOutlet UIButton *GoogleSignIn; @end @implementation ViewController – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } – (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can […]

我的自定义viewcontroller委托不工作

我想发送一个简单的string从一个viewcontroller到另一个viewcontroller使用委托,但我的代理不起作用。 我正在使用故事板,并不想使用segue来传递数据。 这是我简单的代码 ViewControllerA.h #import <UIKit/UIKit.h> @class ViewControllerA; @protocol viewControllerADelegate <NSObject> -(void) addItem: (ViewControllerA *)controller data:(NSString *)item; @end @interface ViewControllerA : UIViewController{ __weak id <viewControllerADelegate> delegate; } – (IBAction)buttonPressed:(id)sender; @property (weak) id<viewControllerADelegate> delegate; @end ViewControllerA.m #import "ViewControllerA.h" @interface ViewControllerA () @end @implementation ViewControllerA @synthesize delegate; – (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil […]