Skip to content

Instantly share code, notes, and snippets.

@neino3
Last active August 29, 2015 13:56
Show Gist options
  • Save neino3/9103572 to your computer and use it in GitHub Desktop.
Save neino3/9103572 to your computer and use it in GitHub Desktop.
iOSアプリ勉強会資料(詳細! Objective-C iPhoneアプリ開発 入門ノート)

Chapter 6-1 タッチイベントを認識する(p218〜)

Gesture Recognizerの種類

  • Tap Gesture Recognizer: タップ、ダブルタップ
  • Pinch 〜: ピンチ
  • Rotation 〜: 2本指でひねる回転操作
  • Swipe 〜: スワイプ
  • Pan 〜: パン(パニング、ドラッグ) ※パン、パニング=マウスbuttonIndexでいうドラッグのこと
  • Long Press 〜: 長押し(タッチ&ホールド)

補足

ダブルタップ、マルチタッチ(p224〜)

ドラッグ(p227〜)

補足

回転(p231〜)

ピンチイン/ピンチアウト(p235〜)

  • UIPinchGestureRecognizerのscaleプロパティを使う

長押し(ロングプレス)(p237〜)

  • UILongPressGestureRecognizerを使う
  • UIImageViewのhiddenプロパティで表示、非表示を制御できる
    • _arrow.hidden = YES // 非表示
    • _arrow.hidden = NO // 表示
  • animateWithDuration: アニメーションをおこなうメソッド
    • duration : アニメーションさせる時間(秒)
    • delay:いつ開始するか(秒)
    • option:アニメーションの方法
      • EaseOut:ゆっくり停止
      • EaseIn:ゆっくりスタート
      • EaseInOut:ゆっくりスタート、ゆっくり停止
    • animation:アニメーションさせる内容を指定するブロック
    • completion: 完了時に動くブロック
  • chapter6-1-ex_UILongPressGR

補足

  • ボタン、スイッチなどの標準のコントロールの中には、「ラジオボタン」がない  - みんな自作 or OSSを使っている

スワイプ(p241〜)

  • UISwipeGestureRecognizerを使う
  • UISwipeGestureRecognizerのdirectionプロパティで方向がわかる
    • UISwipeGestureRecognizerDirectionRight, 〜Left, 〜Up, 〜Down

Gesture Recognizerをプログラムで設定する(p250〜)

  • インタラクティブ動作を受け取る
    • userInteractionEnabledプロパティにYESを設定
  • ジェスチャーのインスタンスを生成する
    • UITapGestureRecognizer initWithTarget
      • target:アクションを受け取るオブジェクト
      • action:タップで実行するメソッド
  • ジェスチャー追加
    • UIViewのaddGestureRecoginizerで追加する
  • TP: chapter6-1-add_gesture

シングルタップとダブルタップを区別する(p253〜)

  • UIGestureRecognizerのnumberOfTapsRequired : 認識されるために必要なタップ数。デフォルト1  - 参考:numberOfTouchesRequired:認識されるために必要な指の数。デフォルト1
  • UIGestureRecognizer#requireGestureRecognizerToFail otherGestureRecoginzer

chapter 6-2 アラートとアクションシート(p256〜)

デリゲートを使ったイベント処理

  • デリゲート=委譲
  • 「自分」が受けたメッセージの処理を「他のクラス」に任せる
  • 「UIAlertView」が受けたメッセージ処理を「UIViewController」に任せる

@interface Bクラス: スーパークラス名<Aクラスのデリゲートプロトコル>

@interface ViewController:UIViewController<UIAlertViewDelegate>

  • UIAlertViewクラスの場合は、UIAlertViewDelegateプロトコルの宣言を省略できる

アラートを表示する(p257〜)

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@" 確認"
    message:@" 実行します"
    delegate:self
    cancelButtonTitle:@" キャンセル"
    otherButtonTitles:@"OK",nil];
[alert show];
  • 3つ以上ボタンを表示する場合は、otherButtonTitlesに複数指定する。最後はnilで終わる
〜 otherButtonTitles:@"Aコース",@"Bコース",nil];
(void) lalertView: (UIAlertView *)alertview clickedButtonAtIndex:(NSInteger)buttonIndex
  • ボタンが押されたときのメッセージのデリゲート先
    • buttonIndex: 押したボタンのインデックス
    • 0: キャンセル
    • 1〜: otherButtonTitilesでタイトルを指定した順序。

入力フィールドを持ったアラート(p262〜)

  • alertViewStyleプロパティで指定する

    • UIAlertViewStyleDefault: 入力フィールドなし
    • UIAlertViewStyleSecureTextInput: 伏せ字の入力フィールド
    • UIAlertViewStylePlainTextInput: 通常の入力フィールド
    • UIAlertViewStyleLoginAndPasswordInput: ログインIDフィールド、パスワード入力フィールド
  • UIAlertViewDelegateのリファレンス https://developer.apple.com/library/ios/documentation/uikit/reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html

    • alertViewShouldEnableFirstOtherButton: アラート表示直後と入力フィールドの値が変化するたびに実行
  • テキストフィールドの値はどのように取得するか?

    • alertView textFieldAtIndex:(NSInteger)でテストフィールドのインデックス(0オリジン)を指定してUITextFiledのインスタンスをを取得する
      • 入力フィールドが2つある場合(ログインなど)は、インデックスに0, 1をそれぞれ指定する
    • 取得したUITextFiledのtextプロパティを参照すると実際に入力された文字が入っている
  • TP: chapter6-2-ex_UIAlertView-secureTextInput

アクションシート(p266〜)

  • UIActionSheetクラスを使う
  • アラートとほぼ同じ
  • ヘッダファイルでのUIActionSheetDelegateプロトコルの指定は省略できない(<-->UIAlertViewDelegateプロトコルは省略可能)
  • clickedButtonAtIndexに渡ってくるインデックス
    • 0: destructiveButtonTitleに指定したボタンのindex. nilを指定した場合はotherButtonTitlesに0から割り当て
    • 1〜: otherButtonTitlesに指定したボタンの順番
    • 最後: cancelButtonTitleで指定したボタンタイトル

勉強会用の設定

画面の一部をズームする

システム環境設定→アクセシビリティ→ズーム機能

  • ズーム切/入: option+command+8
  • 拡大: option + command + ^
  • 縮小:option + command + -

マウスの周りだけ明るくする

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment