титан ti.paint toimage() возвращает {} после рисования на ios

следующий код приводит к разным выводам разных android и ios. myBlob ниже {} на ios - изображение пустое даже после рисования на экране. в Android это объект со свойствами и работает нормально, но в iOS изображение всегда пустое.

Это работало раньше в прошлых версиях и сборках iOS, так что я не прав? Мы используем 5.3.0 GA для титанового SDK. Я проверил модуль для iOS в редакторе TiApp.

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);
}

Модуль Ti Paint для iPhone

#
# 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'
            });

person user6701009    schedule 19.08.2016    source источник


Ответы (2)


если у вас есть что-то в вашей иерархии представлений, которое перекрывает ваше представление, такое как диалоговое окно подтверждения или закрытие представления в контроллере навигации, и вы не захватываете свое представление до закрытия окна, представление рисования всегда будет возвращаться пустым. android будет продолжать работать нормально, а ios - нет, так как представление отсутствует в иерархии представлений.

person steve hype    schedule 22.08.2016

Ваше значение журнала консоли {} является отвлекающим маневром.

Протестировано на:

  • TiSDK 5.2.2.GA, 5.3.0.GA
  • ti.paint: 1.4.0, 1.4.1 (наша версия с исправлениями, которые были проигнорированы appc)
  • С <run-on-main-thread>false</run-on-main-thread> в tiapp.xml

Используя пример 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. Зарегистрированное значение всегда будет {}
  2. Длина объекта, который вы назначили Image(), увеличивается по мере добавления пикселей в ваш paintView.
  3. Изображение ДЕЙСТВИТЕЛЬНО записывается в файл.
person StephenFeather    schedule 20.08.2016
comment
Вы также обнаружите, что test имеет ширину (test.width) и высоту (test.height). - person StephenFeather; 20.08.2016
comment
Хорошо. Так что я должен делать что-то неправильно, потому что длина всегда одинакова, а база 64 всегда пуста? - person user6701009; 20.08.2016
comment
[INFO] 14162 для test.length всегда, даже при рисовании на экране. изображение всегда пустое. - person user6701009; 20.08.2016
comment
См. выше - изображение всегда пустое и имеет одинаковый вывод для test.length. Я неправильно создаю приложение? - person user6701009; 22.08.2016