2016-04-25 58 views
0

我一直在努力讓UIPrinterPicker在NativeScript上顯示在iPad上。我從別人那裏得到了很多幫助。在NativeScript中顯示PopOver

我現在的問題是UIPrinterPicker PopOver無法在iPad上正確顯示。正如你可以在圖像中看到的那樣,下面的白色條是PopOver。我沒有應用任何CSS,也沒有找到關於在NativeScript中設置PopOver樣式的文檔。

注:我能夠讓UIPrinterPicker顯示在iPhone上,因爲它不需要在PopOver中打開。

enter image description here

下面是該頁面的相關代碼:

var frames = require("ui/frame"); 
var view; 

function pageLoaded(args) { 
    var page = args.object; 
    view = page.ios; 
} 
exports.pageLoaded = pageLoaded; 

function selectPrinter() { 
    var runningOniPad = (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiomPad); 
    var printPicker = UIPrinterPickerController.printerPickerControllerWithInitiallySelectedPrinter(null); 
    var completionHandler = function(printerPicker, userDidSelect, error) { 
           if (error != null) { 
            console.log("error: " + error); 
           } 
           global.selectedPrinter = printerPicker.selectedPrinter; 
           console.log("selectedPrinter: " + global.selectedPrinter); 
          }; 
    if (! runningOniPad) { 
     printPicker.presentAnimatedCompletionHandler(false, completionHandler); 
    } else { 
     printPicker.presentFromRectInViewAnimatedCompletionHandler(view.view.frame, view.view, false, completionHandler); 
    } 

} 
exports.selectPrinter = selectPrinter; 

及以下的UI XML:

<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="pageLoaded"> 
    <GridLayout columns="*" rows="*" horizontalAlignment="center" verticalAlignment="center" > 
     <StackLayout id="myStackLayout"> 
      <Button text="Select Printer" tap="selectPrinter" /> 
     </StackLayout> 
    </GridLayout> 
</Page> 

是否有正確顯示酥料餅的方法嗎?

回答

1

我已經測試你的情況和我做了什麼,顯示iPad的下酥料餅的創造與initWithFrame自定義視圖這樣的:

else { 

    var makeView = UIView.alloc().initWithFrame({origin: {x:0, y:0}, size: {width: 400, height: 600 } }); 

    printPicker.presentFromRectInViewAnimatedCompletionHandler(makeView.frame, view.view, false, completionHandler); 
} 

您可以進一步自定義您的新視圖的本機方式。 以防萬一你想知道如何讓你的自定義視圖的相對位置,你可以使用這樣的事情

var makeView = UIView.alloc().initWithFrame({ 
    origin: { x: view.view.frame.origin.x, 
       y: view.view.frame.origin.y }, 
    size: { width: view.view.bounds.size.width/2, 
      height: view.view.bounds.size.height/2 } 
}); 

我強烈建議您使用不同的話了變量視圖,以避免混淆讀一些喜歡當view.view

+0

Thanks Nick!我感謝幫助,並同意變量命名可以使用一些清理。 – swatkins

+0

是的 - 我在測試期間陷入了這個陷阱,並且懷疑這個視圖和view.view命名:) –