以下代码导致不同的输出不同的android和ios。下面的myBlob在ios上是{} - 即使在屏幕上绘图后图像也是空的。在Android中它是一个具有属性的对象并且工作正常,但iOS图像始终为空白。
这在过去的ios版本和版本之前有效,所以我没有正确构建它吗?我们使用5.3.0 GA for titanium SDK。我在TiApp编辑器中检查了iOS模块。
function uploadImage(signed) {
if (signed) {
var myBlob;
try {
myBlob = $.viewPaint.toImage();
var myImage = Titanium.Utils.base64encode(myBlob).toString();
$.nextAction.image = myImage;
} catch (ex) {
Titanium.API.error('FAILURE HANDLING SIGNATURE DOCUMENT: ' + ex);
return;
}
}
$.nextAction.perform(Alloy.Globals.requests);
}
iPhone的Ti Paint模块
#
# this is your module manifest and used by Titanium
# during compilation, packaging, distribution, etc.
#
version: 1.4.0
apiversion: 2
architectures: armv7 i386 x86_64 arm64
description: Provides a paint surface user interface view.
author: Jeff Haynie
license: Appcelerator Commercial License
copyright: Copyright (c) 2010-2014 by Appcelerator, Inc.
# these should not be edited
name: paint
moduleid: ti.paint
guid: 43f13063-d426-4e9c-8a7a-72dc5e4aec57
platform: iphone
minsdk: 3.4.1.GA
将执行添加到操作对象的先前代码
var route = action.action.uri;
Ti.API.info('route = ' + route);
newAction.execute = function(requestManager) {
Titanium.App.fireEvent('app:index:view:requested',
controller : 'signscreen',
uri : route
});
};
触发事件打开的代码:
Titanium.App.fireEvent('app:index:view:requested', {
controller : 'signature'
});
答案 0 :(得分:0)
您的控制台日志值{}
是红色鲱鱼。
经过测试:
<run-on-main-thread>false</run-on-main-thread>
使用模块中的示例app.js并添加以下内容:
var buttonSave = Ti.UI.createButton({ bottom:100, right:10, width:75, height:30, title:'Save' });
buttonSave.addEventListener('click', function(e){
var test = paintView.toImage();
console.log(test.length);
console.log(paintView.toImage());
var imageFile = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,"testing.png");
imageFile.write(paintView.toImage());
});
win.add(buttonSave)
你会发现
{}
答案 1 :(得分:0)
如果您的视图层次结构中有任何内容覆盖您的绘图视图,例如确认对话框或关闭导航控制器中的视图,而不是在窗口关闭之前抓取您的绘图视图,则paintview将始终返回空白。 android将继续正常工作,但ios不会因为视图层次结构中不存在视图。