Cocoa/WebViewの組み込み
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(Cocoa/WebViewの組み込み);
*目次 [#g8cf9e5e]
#contents
*関連ページ [#n7005997]
*参考情報 [#l5899f0b]
*WebViewを設置した単純なネイティブアプリを作成する [#vbcc...
**Swift + Storyboardの場合 [#e6933ce6]
***URLを表示する [#oe555c82]
-Storyboardを開きView ControllerにWebViewを設置
-WebViewをViewController.swiftにControlドラッグし、アウト...
-ViewControllerのviewDidLoad()で以下のようにすればURLを表...
#pre{{
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string:"http://www.softantenna.c...
let request = NSURLRequest(URL: url)
myWebView.mainFrame.loadRequest(request)
myWebView.policyDelegate = self
}}
***ツールバーを設置する [#ie733860]
-StoryboardでWindow Controllerを選択し、その中にあるWindo...
-デフォルトのボタンを削除し、Image Toolbar Itemを追加する。
-戻る・進む・リロードなどはAttributes InspectorのImage Na...
***ツールバーのボタンを押したときの処理 [#t5ee4e1c]
-例えばツールバーに戻る、進むボタンを設置する場合。
-Window Controllerのクラスとして以下を指定する(新規=>New...
#pre{{
class MyWindowController: NSWindowController {
override func windowDidLoad() {
super.windowDidLoad()
// Implement this method to handle any initializa...
}
var viewController: ViewController {
get {
return self.window!.contentViewController! as...
}
}
@IBAction func backClicked(sender: NSToolbarItem) {
print("abc");
viewController.goBack()
}
}
}}
-ツールバーのボタンを右クリックし、sent > Actionをドラッ...
-ちなみに戻る処理はViewController.swift内部の以下の処理。
#pre{{
func goBack() {
myWebView.goBack()
}
}}
***リンククリック時に外部ブラウザで開く [#t0581484]
-ViewControllerにWebPolicyDelegateを実装。policyDelegate...
-decidePolicyForNavigationActionは通常のリンクをクリック...
-decidePolicyForNewWindowActionはtarget="_blank"のリンク...
#pre{{
class ViewController: NSViewController,WebPolicyDelegate {
@IBOutlet weak var myWebView: WebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string:"http://www.softantenna.c...
let request = NSURLRequest(URL: url)
myWebView.mainFrame.loadRequest(request)
myWebView.policyDelegate = self
}
func openLinkWithSafari(actionInformation: [NSObject ...
let url: String = request.URL!.absoluteString
if !url.hasPrefix("http://www.softantenna.com/") ...
listener.ignore()
return
}
}
func webView(webView: WebView, decidePolicyForNavigat...
if WebNavigationType.LinkClicked.rawValue == Int(...
self.openLinkWithSafari(actionInformation, re...
}
listener.use()
}
func webView(webView: WebView, decidePolicyForNewWind...
if WebNavigationType.LinkClicked.rawValue == Int(...
self.openLinkWithSafari(actionInformation, re...
}
listener.use()
}
}
}}
**Objective-C + xibの場合 [#e25dd591]
[[objective c - How to load URL on launch in a WebView (O...
-xibのWindow内部のviewにWebViewをドロップ。
-xibとAppDelegateのソースコードを同時に表示して(アシスタ...
-ヘッダーは以下のようになる。
#pre{{
#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (weak) IBOutlet WebView *myWebView;
@end
}}
-ソースは以下のようになる。
#pre{{
#import "AppDelegate.h"
@interface AppDelegate ()
@property (weak) IBOutlet NSWindow *window;
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)a...
// Insert code here to initialize your application
[[self.myWebView mainFrame] loadRequest:[NSURLRequest...
}
- (void)applicationWillTerminate:(NSNotification *)aNotif...
// Insert code here to tear down your application
}
@end
}}
-プロジェクト設定でWebKit.frameworkを追加する。
-またATSのせいでHTTP接続ができない場合、Info.plistを修正...
終了行:
&tag(Cocoa/WebViewの組み込み);
*目次 [#g8cf9e5e]
#contents
*関連ページ [#n7005997]
*参考情報 [#l5899f0b]
*WebViewを設置した単純なネイティブアプリを作成する [#vbcc...
**Swift + Storyboardの場合 [#e6933ce6]
***URLを表示する [#oe555c82]
-Storyboardを開きView ControllerにWebViewを設置
-WebViewをViewController.swiftにControlドラッグし、アウト...
-ViewControllerのviewDidLoad()で以下のようにすればURLを表...
#pre{{
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string:"http://www.softantenna.c...
let request = NSURLRequest(URL: url)
myWebView.mainFrame.loadRequest(request)
myWebView.policyDelegate = self
}}
***ツールバーを設置する [#ie733860]
-StoryboardでWindow Controllerを選択し、その中にあるWindo...
-デフォルトのボタンを削除し、Image Toolbar Itemを追加する。
-戻る・進む・リロードなどはAttributes InspectorのImage Na...
***ツールバーのボタンを押したときの処理 [#t5ee4e1c]
-例えばツールバーに戻る、進むボタンを設置する場合。
-Window Controllerのクラスとして以下を指定する(新規=>New...
#pre{{
class MyWindowController: NSWindowController {
override func windowDidLoad() {
super.windowDidLoad()
// Implement this method to handle any initializa...
}
var viewController: ViewController {
get {
return self.window!.contentViewController! as...
}
}
@IBAction func backClicked(sender: NSToolbarItem) {
print("abc");
viewController.goBack()
}
}
}}
-ツールバーのボタンを右クリックし、sent > Actionをドラッ...
-ちなみに戻る処理はViewController.swift内部の以下の処理。
#pre{{
func goBack() {
myWebView.goBack()
}
}}
***リンククリック時に外部ブラウザで開く [#t0581484]
-ViewControllerにWebPolicyDelegateを実装。policyDelegate...
-decidePolicyForNavigationActionは通常のリンクをクリック...
-decidePolicyForNewWindowActionはtarget="_blank"のリンク...
#pre{{
class ViewController: NSViewController,WebPolicyDelegate {
@IBOutlet weak var myWebView: WebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string:"http://www.softantenna.c...
let request = NSURLRequest(URL: url)
myWebView.mainFrame.loadRequest(request)
myWebView.policyDelegate = self
}
func openLinkWithSafari(actionInformation: [NSObject ...
let url: String = request.URL!.absoluteString
if !url.hasPrefix("http://www.softantenna.com/") ...
listener.ignore()
return
}
}
func webView(webView: WebView, decidePolicyForNavigat...
if WebNavigationType.LinkClicked.rawValue == Int(...
self.openLinkWithSafari(actionInformation, re...
}
listener.use()
}
func webView(webView: WebView, decidePolicyForNewWind...
if WebNavigationType.LinkClicked.rawValue == Int(...
self.openLinkWithSafari(actionInformation, re...
}
listener.use()
}
}
}}
**Objective-C + xibの場合 [#e25dd591]
[[objective c - How to load URL on launch in a WebView (O...
-xibのWindow内部のviewにWebViewをドロップ。
-xibとAppDelegateのソースコードを同時に表示して(アシスタ...
-ヘッダーは以下のようになる。
#pre{{
#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (weak) IBOutlet WebView *myWebView;
@end
}}
-ソースは以下のようになる。
#pre{{
#import "AppDelegate.h"
@interface AppDelegate ()
@property (weak) IBOutlet NSWindow *window;
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)a...
// Insert code here to initialize your application
[[self.myWebView mainFrame] loadRequest:[NSURLRequest...
}
- (void)applicationWillTerminate:(NSNotification *)aNotif...
// Insert code here to tear down your application
}
@end
}}
-プロジェクト設定でWebKit.frameworkを追加する。
-またATSのせいでHTTP接続ができない場合、Info.plistを修正...
ページ名: