2016-04-22 18 views
0

UIPrinterPickerControllerを呼び出した後、NativeScriptでプリンタピッカーを表示できません。ここでiOS上のNativeScriptでプリンタピッカーを表示する方法

は私のコードです:

var printPicker = UIPrinterPickerController.printerPickerControllerWithInitiallySelectedPrinter(null); 
console.log("printPicker: " + printPicker); 
var found = printPicker.presentAnimatedCompletionHandler(false, function(printerPicker, userDidSelect, error) { 
    if (error != null) { 
     console.log("error: " + error); 
    } 
    console.log("printerPicker: " + printerPicker); 
    console.log("userDidSelect: " + userDidSelect); 
}); 
console.log("found: " + found); 

そして、ここでは、出力されます。

CONSOLE LOG file:///app/pages/main/main-page.js:16:16: printPicker: <UIPrinterPickerController: 0x146e948b0> 
2016-04-22 15:19:17.101 checkInApp[349:41167] WARNING: Calling -[UIPrinterPickerController presentAnimated:completionHandler:] on iPad 
CONSOLE LOG file:///app/pages/main/main-page.js:24:16: found: true 
CONSOLE LOG file:///app/pages/main/main-page.js:16:16: printPicker: <UIPrinterPickerController: 0x146e948b0> 
2016-04-22 15:19:19.627 checkInApp[349:41167] WARNING: Calling -[UIPrinterPickerController presentAnimated:completionHandler:] on iPad 
CONSOLE LOG file:///app/pages/main/main-page.js:24:16: found: false 
CONSOLE LOG file:///app/pages/main/main-page.js:21:20: printerPicker: <UIPrinterPickerController: 0x146e948b0> 
CONSOLE LOG file:///app/pages/main/main-page.js:22:20: userDidSelect: false 

NativeScriptでこれを呼び出す方法についての答えhereを受け取った後、私は私のコールバックが実際に実行されることを確認することができます。しかし、上記のコードを一度実行するボタンをタップすると、コールバックは起動しません(これは、Pickerが表示するポイントであると仮定しています)。私は再びそれをタップした場合、コールバックはuserDidSelectが偽であると発火します。

サブクラスでprinterPickerControllerParentViewControllerのピッカーの表示を制御できると読んだことがありますが、メインビューからピッカーを表示するだけでデフォルトになると考えました。

NativeScript内からピッカーを表示するにはどうすればよいですか?

UPDATE

PrinterSimulatorランニングでiOSシミュレータ上で正常に動作するようです。

UPDATE 2

実際には、iPhone 6シミュレータに取り組んでいます。 iPadシミュレータや実​​際のiPadデバイスでは動作しません。私はPickOverがPopOverとして開かれる必要があると私はどこかに読んだと思うが、私はその実装方法を知らない。どんな助けもありがとう。

答えて

0

問題は、iPadのポップオーバーでUIPrinterPickerControllerを開く必要があることです。したがって、アプリケーションが動作しているデバイスを検出し、適切なメソッドを呼び出す必要があります。ここではそれが行われている方法です。

if (! UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiomPad) { 
    printPicker.presentAnimatedCompletionHandler(false, completionHandler); 
} else { 
    printPicker.presentFromRectInViewAnimatedCompletionHandler(view.frame, view, false, completionHandler); 
} 

私はまだ viewview.frameへの参照を探しています - 私は open question here for thatを持っています。

UPDATE

The answer for the reference to the correct parameters is here。基本的に、loadedハンドラではargs.object.ios.viewviewへの参照が得られます。

関連する問題