我遇到了phonegap和iOS 9的问题,ios 8工作正常,当你点击文件输入时,它会在屏幕中间显示一个取消按钮,在点击时什么都不做。文件输入在safari中运行良好,但在我构建的应用程序中,它没有。
我意识到有一个phonegap文件上传器API,但我使用我的应用程序作为我的网站的移动版本的网络浏览器,所以我还没有构建一个完全原生的应用程序,这是一个快速的解决方案为了我。
这可能是因为新的操作表样式或ios 9中的操作表中添加了新选项。
有没有人有解决方案可以跳过操作表,点击输入文件时我会直接进入相机胶卷?或者对此有任何解决方法?
答案 0 :(得分:0)
我转移到插件 - cordova-plugin-camera,这解决了问题。
点击输入类型文件后:
e.preventDefault();
navigator.notification.confirm(
'Please select image', // message
function (buttonIndex) {
if (buttonIndex === 1) {
photoFromSource(navigator.camera.PictureSourceType.CAMERA);
} else {
photoFromSource(navigator.camera.PictureSourceType.PHOTOLIBRARY);
}
}, // callback to invoke with index of button pressed
'Image capture', // title
['Camera', 'Gallery'] // buttonLabels
);
function photoFromSource(source) {
var targetWidth = 640,
targetHeight = 640,
onSuccess = function (imageURI) {
var image = new Image(),
canvas = document.createElement('canvas'),
canvasContext = canvas.getContext('2d');
image.onload = function () {
canvas.width = image.width;
canvas.height = image.height;
canvasContext.drawImage(image, 0, 0, image.width, image.height);
var dataURL = canvas.toDataURL();
self.model.set('imageData', dataURL);
self.model.setDataAttr('image', true);
self.render();
};
image.src = imageURI;
},
onFail = function (message) {
// Ignore if no image seleted
if (!/^no image selected$/.test(message))
alert('Failed because: ' + message);
},
opts = {
quality: 50,
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: source,
mediaType: navigator.camera.MediaType.PICTURE,
targetWidth: targetWidth,
targetHeight: targetHeight,
encodingType: navigator.camera.EncodingType.JPEG,
correctOrientation: true,
cameraDirection: navigator.camera.Direction.BACK,
saveToPhotoAlbum: false
};
try {
navigator.camera.getPicture(onSuccess, onFail, opts);
}
catch (e) {
alert('Could not capture image: ' + e);
}
};