新手到xcode和objective-c。所以请原谅我的新手错误,但我有这个错误“'NSInvalidArgumentException',原因:' - [UIView isAnimating]:无法识别的选择器发送到实例”现在已经超过一天了,并且已经做了很多搜索而没有优先权。清理/构建应用程序时没有错误,但是当我单击按钮加载“UIIMagePickerController”时,应用程序终止并抛出错误。请帮忙。 THX
- (void)showImagePickerForSourceType:(UIImagePickerControllerSourceType)sourceType
{
if (self.imageView.isAnimating)
{
[self.imageView stopAnimating];
}
if (self.capturedImages.count > 0)
{
[self.capturedImages removeAllObjects];
}
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
imagePickerController.sourceType = sourceType;
imagePickerController.delegate = self;
if (sourceType == UIImagePickerControllerSourceTypeCamera)
{
imagePickerController.showsCameraControls = NO;
[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
self.overlayView.frame = imagePickerController.cameraOverlayView.frame;
imagePickerController.cameraOverlayView = self.overlayView;
self.overlayView = nil;
}
self.imagePickerController = imagePickerController;
[self presentViewController:self.imagePickerController animated:YES completion:nil];
}
答案 0 :(得分:1)
您的代码self.imageView.isAnimating
正在被编译器变为[类似]:
[[self imageView] isAnimating]
根据错误消息,[self imageView]
正在返回UIView
个对象。 <{1}}类没有方法isAnimating
,所以你得到一个例外。
找出UIView
的设置位置,也许它在那里做错了什么?另外,你有ARC打开吗?它可能是一个内存管理错误。
答案 1 :(得分:0)
尝试更改行:
if (self.imageView.isAnimating)
到
if ([self.imageView isAnimating])
确保self.imageView
确实是UIImageView
答案 2 :(得分:0)
该错误消息表示您尝试向未实现该消息的对象发送消息(大致等同于以Java,C ++或大多数其他语言调用函数)。这使得Objective C与许多其他流行语言不同。我建议给this article一个读数,特别是那个说
的部分系统在运行时确定程序执行时,给定对象是否响应特定消息,如果是,则执行哪种方法。
另外,正如其他人所指出的那样,错误消息显示您的imageView
对象是UIView
而不是UIImageView
。弄清楚为什么会解决你的问题。