2011-06-05 109 views
2

为了使我的自定义工具栏在我UIImagePickerControllerSourceTypeCamera,我不得不关掉摄像机控制这样的:隐藏UIImagePickerControllerSourceTypceCamera工具栏,但特定按钮?

pickerOne.showsCameraControls = YES; 

我想说明的变焦,闪光灯,切换摄像头,并专注于UIImagePickerController,但我想创建我的自定义视图。添加我的自定义视图时,只有在关闭cameraControls时才会显示。

有什么方法可以不隐藏相机控制并使我的自定义视图?或者我将不得不手动添加这些按钮?

回答

0

您可以通过检查hittest方法中的接收视图来忽略覆盖视图上的触摸。只需将此代码添加到叠加视图中,该视图上的所有内容都将被忽略,但不会覆盖其子视图上的内容。

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    id hitView = [super hitTest:point withEvent:event]; 
    if (hitView == self) return nil; 
    else return hitView; 
} 

如果今天在stackoverflow上阅读,但我不记得在哪里,sry。

2

我相信除了在自定义视图中实现本地功能(叠加),没有其他方式(至少以直接方式)。
其他方法(我没有尝试过)是将自定义视图(不使用cameraOverlay属性)添加到UIImagePickerController rootview。这不是建议/允许的,但似乎会起作用。自动闪光/缩放/前置摄像头...不使用自定义视图的原因是,视图层次不同。

如果你看看流行的相机应用程序,他们大多数实现这些控制。另外,我也做了同样的事情。
事实上,它应该很难实现。 '点击对焦'实施起来很棘手,实际的焦点是默认完成的。我们所需要做的就是围绕触摸画出正方形。