十月 2019

WKWebView 功能測試 (下) - 與 Javascript 交流

使用 Javascript 連結網頁與 APP

最後要測試的是最重要的功能,也就是使用 Javascript 連結網頁與 APP。

希望達到的功能有二種:

  • 由 APP 向網頁注入 Javascript,並取得傳回資料。

  • 網頁的 Javascript 執行 APP 的功能並傳資料給 APP。

有了這雙方溝通的功能,就可以做出很多應用了。

由 APP 向網頁注入 Javascript

在這裡我們要設計二個測試:

1. 把 APP 輸入欄位的內容寫到網頁中的 Label 中。

重要度:
文章分類:

WKWebView 功能測試 (上) - 建置、設定、呈現

 

以前 Mac 程式內建的瀏覽器元件是用 WebView,iOS 則是用 UIWebView,而現在最新的是用 WKWebView,不過文中若提到 WebView 通常就是指 WKWebView,除非有特別強調是指舊版的框架。

建置 WKWebView

因為直接使用 WebView 元件似乎會有問題,在 Xcode 上雖然可以執行,但是直接由 APP 執行就看不到 WebView,所以採用使用 code 來建置 WebView。

底下的 code 是 copy 來的,黑色是原來就有的,紅色是後來加上去的。

 

import Cocoa

import WebKit

 

class ViewController: NSViewController, WKUIDelegate, WKNavigationDelegate {

 

    let webView = WKWebView()

    

    override func viewDidLoad() {

        super.viewDidLoad()

 

        // Do any additional setup after loading the view.

        

        self.webView.uiDelegate = self

        self.webView.navigationDelegate = self

        webView.frame = CGRect(x:0,y:0,width:400,height: 270)

        view.addSubview(webView)

                

        let myURL=URL(string: "https://www.apple.com")

        let myRequest = URLRequest(url: myURL!)

        webView.load(myRequest)

    }

 

    override var representedObject: Any? {

        didSet {

        // Update the view, if already loaded.

        }

    }

}

 

重要度:
文章分類:

Cocoa 用程式操控視窗 (下)

 

本篇要實作二個視窗,一個主視窗,一個子視窗,類似在 MS Window 開發程式時的 fmMain、fmOption 二個視窗。

重點在於主視窗可以開啟子視窗,子視窗可以關閉,但並不是像 Mac 的視窗那樣真的關閉,只是隱藏起來。當再次開啟副視窗時,則再次呈現,畫面中的內容也保持一樣。

同時也希望各視窗之間可以彼此操控對方的元件。

 

初步構想

 

  1. 先設定全域變數 vcMain 和 vcOption 來記錄二個視窗的 ViewController。

  2. 要開啟子視窗時,先判斷子視窗是否已經實作了?若無,則實作它,若已實作了則顯示它。

  3. 實作視窗後,記錄在全域變數中。

  4. 子視窗關閉時,採用隱藏方式。

  5. 利用全域變數去控制對方視窗的元件。

 

重要度:
文章分類:

Cocoa 用程式操控視窗 (中)

Window 與 View 的生命周期

 

記錄一下自己測試的順序,這也是為什麼在 ViewController 中要設定 Window 的代理不能在第一個 viewDidLoad 之後做,因為此時 window 還沒有 windowDidLoad。要等到 viewWillAppear 時才能設定 window 的代理。

  • viewDidLoad
  • windowDidLoad
  • viewWillAppear
  • viewDidAppear
  • viewWillLayout
  • viewDidLayout
  • viewWillLayout
  • viewDidLayout
  • ------------------
  • windowShouldClose
  • windowWillClose
  • viewWillDisappear
  • viewDidDisappear

 

重要度:
文章分類:
電腦標籤:

Cocoa 用程式操控視窗 (上)

 

在這系列【Xcode 用 Storyboard 開發程式記錄】已經學會了建立視窗與畫面,開啟視窗,以及為元件寫簡單程式。

底下這一系列就要學習如何用程式來開啟視窗,以及跨視窗操作視窗和元件等各種功能,最後再實作一個總複習,讓視窗與元件的控制可以自在無礙,這也是未來設計 CBReader Mac 版的的前測試。

 

重要度:
文章分類:

靈童尋覓錄

當最後一位靈童被帶進來時,大家的神情都流露出緊張中帶著期盼,彷彿說明了對於前二位靈童的表現不是很滿意,大家把希望寄託在最後一位身上。
 
小男孩被帶到房間的中央,老和尚請他坐在椅子上,叫他心情放鬆,準備最後一道考驗。
 
小男孩坐定後,對面突然有一道布簾被拉開,出現了三位年青人,也是排成一字坐在椅子上。
 
老和尚對小男孩說,你不要緊張,這是最後的問題了,這三位之中有一位是你前世的鄰居,你看仔細了,你覺得是哪一位呢?
 
重要度:
文章分類:
一般標籤:

使用 Calibre 將 ePub 轉 PDF 電子書

前言

CBETA 目前提供的電子書主要有三個版本:ePub、PDF、mobi。其中最主要製作的版本是 ePub,至於 PDF 和 mobi 則是利用 Calibre 轉換產生的。因此對於 CBETA 產生的 PDF 或 mobi 的格式有不同需求的法友,可以自行利用 Calibre 來產生適合自己的版本。底下簡單介紹 Calibre 的轉換操作,提供有需要的法友參考。

下載程式

首先下載 Calibre,不過根據我們的經驗,所有 4.x 的版本 (目前最新的版本是 4.2.0) 產生的 PDF 會有問題,中文內容經複製後會產生亂碼,因此我們是下載 3.x 的最後一版,也就是 3.48.0 。若您沒有複製的需求,您可以挑您喜歡的版本來轉換。

底下網址可以找到各種版本,包括 Windows、Mac、Linux 等。

https://download.calibre-ebook.com

因為需要多種版本測試,所以我是下載 Calibre Portable 版。

重要度:
閱讀權限:
文章分類:

Xcode 用 Storyboard 開發程式記錄 (4/4)

 

在獨立檔案建立共用物件

這個階段要建立一個共用物件,例如程式的設定資料,我希望在一個獨立的檔案建立 CSetting 類別,產生 Setting 物件,然後在第二個視窗去修改設定內容,並且在第一個視窗可以取得修改過的資料。

同樣建立新檔,這次不是視窗,所以選空白的 Swift File。

image

重要度:
文章分類:

Xcode 用 Storyboard 開發程式記錄 (3/4)

 

建立第二視窗

接著要設計開啟第二個視窗的功能。

首先打開元件列表,將 View Controller 拉到設計畫面,也就是藍框的位置,那就是第二個視窗。

image

重要度:
文章分類:

Xcode 用 Storyboard 開發程式記錄 (2/4)

設計畫面

現在要在畫面上加一些元件。

先按下右上角紅框的+號,會出現元件列表,把一個 Push Button 拉到畫面的 View 中。

image

重要度:
文章分類:

頁面

借我放一下廣告