2017-05-26 89 views
0

我以編程方式創建了窗口和web視圖。swift osx webview input type = text not working

enter image description here

所有按鈕,單選按鈕被點擊normaly。 但是,如果我點擊輸入,並想輸入文本,它不是點擊。遊標更改,但重點不在輸入。鍵盤不打字。 輸入上的右鍵工作正常,我可以粘貼文本。

// 
// WindowCommand.swift 
// DeskAlerts 
// 
// Created by mihail on 26/04/2017. 
// Copyright © 2017 Toolbarstudio Inc. All rights reserved. 
// 

import Foundation 
import Cocoa 
import SINQ 
import WebKit 
extension NSCoder { 
    class func empty() -> NSCoder { 
     let data = NSMutableData() 
     let archiver = NSKeyedArchiver(forWritingWith: data) 
     archiver.finishEncoding() 
     return NSKeyedUnarchiver(forReadingWith: data as Data) 
    } 
} 



class WindowCommand:NSViewController, WebFrameLoadDelegate, WebUIDelegate, WebEditingDelegate, WebPolicyDelegate, WebDownloadDelegate, WebResourceLoadDelegate 
{ 
    var Coder: NSCoder? 

    var Window: NSWindow? 

    init() { 
     Coder = NSCoder.empty() 
     super.init(coder: Coder!)! 
     InitParentWindow() 
    } 

    required init?(coder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    func InitParentWindow() 
    { 
     let rect = NSRect.init(x: 0.0, y: 0.0, width: 500.0 , height: 500.0) 
     Window = NSWindow(contentRect: rect , styleMask: NSWindowStyleMask.borderless, backing: NSBackingStoreType.retained, defer: false, screen: MainScreen) 


     Window?.isOpaque = true 
     Window?.backgroundColor = NSColor.clear 
     Window?.hasShadow = false 
     Window?.isReleasedWhenClosed = true 
     Window?.acceptsMouseMovedEvents = true 
     Window?.allowsConcurrentViewDrawing = true 
     Window?.ignoresMouseEvents = false 
     Window?.isDocumentEdited = true 
     Window?.level = Int(CGWindowLevelForKey(.maximumWindow)) 
     Window?.makeKeyAndOrderFront(self) 
     Window?.contentViewController = self 
    } 

    func Close() 
    { 
     Window?.close() 
    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 


     let preferences = WebPreferences() 
     preferences.allowsAirPlayForMediaPlayback = true 
     preferences.allowsAnimatedImageLooping = true 
     preferences.allowsAnimatedImages = true 
     preferences.arePlugInsEnabled = true 
     preferences.autosaves = true 
     preferences.cacheModel = WebCacheModel.documentBrowser 
     preferences.isJavaEnabled = true 
     preferences.isJavaScriptEnabled = true 
     preferences.javaScriptCanOpenWindowsAutomatically = true 
     preferences.loadsImagesAutomatically = true 
     preferences.privateBrowsingEnabled = false 
     preferences.shouldPrintBackgrounds = false 
     preferences.tabsToLinks = false 
     preferences.usesPageCache = false 
     preferences.suppressesIncrementalRendering = true 

     self.view.frame = NSRect.init(x: 0, y: 0, width: 500, height: 500) 
     CaptionBrowser = WebView.init(frame: NSRect.init(x: 0, y: 0, width: 500, height: 500) 
     let nillvalue:WebView? = nil 
     if (CaptionBrowser != nillvalue) 
     { 
      CaptionBrowser?.uiDelegate = self 
      CaptionBrowser?.frameLoadDelegate = self 
      CaptionBrowser?.editingDelegate = self 
      CaptionBrowser?.policyDelegate = self 
      CaptionBrowser?.resourceLoadDelegate = self 
      CaptionBrowser?.downloadDelegate = self 
      CaptionBrowser?.windowScriptObject.setValue(HtmlInteropClass(data: Alert!, owner: self), forKey: "external") 
      CaptionBrowser?.preferences = preferences 
      self.view.addSubview(CaptionBrowser!, positioned: NSWindowOrderingMode.above, relativeTo: nil) 


      var url = NSURL(string: (ParentWindowParams?.captionhref)!) 
      CaptionBrowser?.mainFrame.load(URLRequest.init(url: (url! as URL) as URL)) 



      let mainbrowserwidth = 480 

      let mainbrowserheight = 150 






      MainBrowser = WebView.init(frame: CGRect(x:10 ,y:150, width:480 ,height:150)) 
      MainBrowser?.uiDelegate = self 
      MainBrowser?.frameLoadDelegate = self 
      MainBrowser?.editingDelegate = self 
      MainBrowser?.policyDelegate = self 
      MainBrowser?.resourceLoadDelegate = self 
      MainBrowser?.downloadDelegate = self 
      MainBrowser?.preferences = preferences 
      MainBrowser?.windowScriptObject.setValue(HtmlInteropClass(data: Alert!, owner: self), forKey: "external") 

      self.view.addSubview(MainBrowser!, positioned: NSWindowOrderingMode.above, relativeTo: CaptionBrowser) 

      let filePath = Bundle.main.path(forResource: "test", ofType: "html", inDirectory: "Resources") 
      url = NSURL(string: filePath!) 
      MainBrowser?.mainFrame.load(URLRequest.init(url: url! as URL)) 


      //url = NSURL(string: Alerthref!) 
      //MainBrowser?.mainFrame.load(URLRequest.init(url: url! as URL)) 
     } 
    } 

    func webView(_ sender: WebView!, createWebViewWith request: URLRequest!) -> WebView! { 
     return sender 
    } 

    func webView(_ webView: WebView!, decidePolicyForNavigationAction actionInformation: [AnyHashable : Any]!, request: URLRequest!, frame: WebFrame!, decisionListener listener: WebPolicyDecisionListener!) 
    { 

      listener.use() 


    } 

    func webView(_ webView: WebView!, decidePolicyForNewWindowAction actionInformation: [AnyHashable : Any]!, request: URLRequest!, newFrameName frameName: String!, decisionListener listener: WebPolicyDecisionListener!) { 

      listener.use() 

    } 

    func webView(_ sender: WebView!, runJavaScriptAlertPanelWithMessage message: String!, initiatedBy frame: WebFrame!) { 
     print(message) 
    } 
    func webView(_ sender: WebView!, runJavaScriptTextInputPanelWithPrompt prompt: String!, defaultText: String!, initiatedBy frame: WebFrame!) -> String! { 


     return "" 
    } 

    override func loadView() { 
     super.loadView() 
    } 

    override var representedObject: Any? { 
     didSet { 
      // Update the view, if already loaded. 
     } 
    } 


} 
+1

你使用了什麼?請顯示你的嘗試。我個人使用WKWebView,它運作良好。 – Moritz

+0

@EricAya簡單的web視圖。不是周。用wkwebview測試 - 得到了同樣的結果。 –

+0

'得到了同樣的結果'好現在你可以看到你的問題不在webview中。我使用WKWebView和*它的作品*。所以,如果它不適合你,這意味着你有另一個問題,這並不意味着webviews不起作用。所以你應該展示你的嘗試,展示你的代碼,並且解釋你是如何做的,因爲你在代碼庫/安裝的其他地方做錯了什麼或者有什麼錯誤。 – Moritz

回答

0

發現麻煩了。 窗口= NSWindow(contentRect:RECT,styleMask:NSWindowStyleMask.borderless,背襯:NSBackingStoreType.retained,推遲:假,屏幕:MainScreen)

如果我使屬性 styleMask:NSWindowStyleMask.borderless 輸入不菱。

相關問題