ウェブブラウザの使用しているクラス

2010. 05. 13
前回作った『基礎からのiPhone SDK 改訂版』の『ウェブブラウザの作成』に関して、内容を掘り下げたいと思います。


●使用しているクラス

Interface BuilderのDocumentウィンドウで、インターフェイスに使用しているUIKitフレームワークのクラスが分かります。

285

各クラスの継承関係は下図のようになります。

NSObject
    |
    ∟UIResponder
    |       |
    |       ∟UIApplication
    |       |
    |       ∟UIView
    |                ∟UIWindow
    |                ∟UIActivityIndicatorView
    |                ∟UIToolbar
    |                ∟UIWebView
    |                ∟UIControl
    |                        ∟UITextField
    |
    ∟UIBarItem
            ∟UIBarButtonItem


●UIWebViewクラス

UIWebViewクラスは、アプリケーションにウェブコンテンツを埋め込むのに使用します。

これを行うには、単にUIWebViewオブジェクトを作成し、ウィンドウに組み込み、ウェブコンテンツの読み込み要求を送るだけです。

また、このクラスはウェブページの履歴で戻ったり進んだりでき、ウェブコンテンツのプロパティの一部を設定することができます。

loadRequest:メソッドはウェブコンテンツの読み込みを開始、stopLoadingメソッドは読み込みを停止、ウェブビューの読み込み過程でのプロパティを確認できます。

ウェブページの履歴を戻ったり進んだりさせるには、ボタンのアクションとしてgoBackとgoForwardメソッドを使います。

履歴の移動ができない場合にボタンを無効にするには、canGoBackとcanGoForwardプロパティを使います。

ウェブコンテンツ中に電話番号のリンクが合った場合、デフォルトでウェブビューは自動的に電話番号として変換します。

そして電話番号のリンクをタップすると、電話アプリケーションが起動してその番号にかけます。

detectsPhoneNumbersプロパティでNOを指定すると、このデフォルト機能をオフにできます。

ウェブコンテンツをウェブビューで最初に表示する時のスケールは、scalePageToFitプロパティで設定できます。

ユーザはその後ジェスチャーでスケールを変更できます。

ウェブコンテンツの読み込みを追跡するには、UIWebViewDelegateプロトコルに準拠したデリゲートプロパティを設定する必要があります。

iPhoneのSafariや作成したウェブビューで表示における、ウェブコンテンツの最適化や互換性については『Safari Web Content Guide』を参照してください。

・サブクラス化についての注意

UIWebViewクラスはサブクラス化すべきではありません。


●UIToolbarクラス

UIToolbarクラスのインスタンスは、一つ以上のボタンの選択を制御し、ツールバーアイテムを呼び出します。

ツールバーのアイテムをタップした時の外観は、一瞬ハイライト表示になるか、変化しません。

ラジオボタンスタイルの制御を行う場合はUITabBarクラスを使用してください。

UIBarButtonItemクラスのアイテムを作成して使うには、ツールバーにsetItems:animated:メソッドを追加してください。

全てのメソッドは、animated:引数で必要に応じて表示を変更することができます。

ツールバーのアイテム画像は、UIBarItemクラスの画像プロパティを継承しており、ステータスによって通常とハイライトの表示を行います。

例えば、通常ステータスの場合は画像を白くし、斜めの影を付けることができます。


●UIBarItemクラス

UIBarItemは、スクリーンの底にあるバーにアイテム追加する抽象的なスーパークラスです。

アイテムはバーの上でボタンの様に振る舞います。

アイテムはタイトル、画像、アクション、ターゲットを持ちます。

バーのアイテムは有効/無効を設定できます。


●UIBarButtonItemクラス

UIBarButtonItemクラスは、UIToolbarとUINavigationBarオブジェクトに追加するアイテムの振る舞いとプロパティをカプセル化します。

親クラス(UIBarItemクラス)から基本的なボタンの動作を継承しています。

このクラスは、カスタムビューを提供するタブバーやナビゲーションバーが使う、追加するプロパティや初期化メソッドを定義します。


●UITextFieldクラス

UITextFieldオブジェクトは、ユーザがリターンボタンを押した際に、ターゲットオブジェクトへのアクションメッセージの送信と、編集可能なテキストを表示を制御します。

通常は検索操作など、ユーザが少し入力したテキストを元に、すぐにアクションを起こす場合にこのクラスを使用します。

基本的なテキスト編集の動作に加え、UITextFieldクラスはテキストフィールド内に追加情報(と追加コマンドターゲットの提供)をオーバーレイ表示することもできます。

例えば検索アイコンやブックマークボタンをカスタムでオーバーレイ表示することもできます。

UITextFieldクラスは、現在のテキストをクリアする組み込みボタンを提供します。

テキストフィールドオブジェクトは、編集操作に関連する通知のデリゲートオブジェクトを利用できます。

このデリゲートを使って、決まった操作をした時にガイダンスを出すようにカスタマイズすることもできます。

デリゲートのサポートするメソッドの詳細は、UITextFieldDelegateプロトコルを参照してください。

・キーボードの管理

ユーザがテキストフィールドをタップすると、テキストフィールドは最初のレスポンダーとなり、自動的にキーボードを表示するようシステムに要求します。

従って、キーボードがユーザインターフェイスの下方を隠すことになるので、見えなくなる部分の配置を考慮しておく必要があります。

テーブルビューのようないくつかのシステムビューは、最初のレスポンダーとして自動的にスクロールを補助します。

最初のレスポンダーがスクロール領域の下部にある場合、リサイズや再配置をして最初のレスポンダーであるスクロールビューが見えるようにする必要があります。

キーボードを閉じるかどうかの選択はアプリケーション側に責任があります。

例えば、ユーザインターフェイスの特定のボタンをユーザがタップすることで、特定のユーザ操作の応答してキーボードを閉じることもできます。

また、キーボードのリターンキーをユーザが押すと、テキストフィールドのデリゲートはキーボードを閉じます。

キーボードを閉じておくには、現在の最初のレスポンダーのテキストフィールドに、resignFirstResponderメッセージを送信します。

その理由は、キーボードを隠し、現在の編集セッションを(デリゲートオブジェクトの許可と共に)終了するためです。

キーボードの外観は、UITextInputTraitsプロトコルが提供するプロパティでカスタマイズすることができます。

テキストフィールドオブジェクトはこのプロトコルを実行し、定義されているプロパティをサポートします。

このプロパティで、ASCII、数字、URL、Emailなどのキーボードタイプを使用できます。

また、キーボードでの基本的なテキスト入力の動作として、自動で大文字にしたりテキストの補正をサポートすることもできます。

・キーボードの注意

システムがキーボードの表示/非表示をする時、キーボードの通知をいくつか投じます。

これらの通知にはキーボードの情報を含み、サイズをビューの移動計算などに利用できます。

これらの通知の登録には、いくつかのタイプのキーボードの情報が必要です。

システムの提供するキーボード関連のイベントの通知は以下の通りです。

UIKeyboardWillShowNotification
UIKeyboardDidShowNotification
UIKeyboardWillHideNotification
UIKeyboardDidHideNotification

詳細は各通知やUIWindow Class Referenceを参照してください。

キーボードの表示/非表示に関しては、『iOSアプリケーションプログラミングガイド』の『テキストとWeb』を参照してください。


●UIActivityIndicatorViewクラス

UIActivityIndicatorViewクラスは、不確定なタスクの進捗を示すインジケータの生成と管理をします。

このインジケータの外観は、ギアが回転するアニメーションです。

インジケータの進捗アニメーションの制御は、startAnimatingとstopAnimatingメソッドで行います。

hidesWhenStoppedプロパティをYESに設定すると、インジケータはアニメーションを止めて自動的に隠れます。



参考文献

UIWebView Class Reference

UIToolbar Class Reference

UIBarItem Class Reference

UIBarButtonItem Class Reference

UITextField Class Reference

UIActivityIndicatorView Class Reference

基礎からのiOS SDK基礎からのiOS SDK
(2010/10/09)
鶴薗 賢吾、松浦 健一郎 他

商品詳細を見る






Bose SoundLink around-ear wireless headphones II
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
06 | 2017/07 | 08
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose SoundLink around-ear wireless headphones II
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR