ASCII倶楽部

このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング 第23回

何も描かれていない部分でタッチ操作を検知

共有キャンバスにアクセスする

2017年01月23日 18時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 今回から、「Shapes」のテンプレートを利用して、少し応用的なプログラムを作成していきます。前回は、描いた図形オブジェクトに対するイベント処理を学びました。ユーザーが図形に触れると、あらかじめ用意しておいたイベント処理のためのプログラムが自動的に呼び出されるというものでした。そして、長方形をボタンに見立て、それに触れると現在時刻を表示するという単純なイベント処理も実現しました。

 今回から目指すのは、簡単なお絵描きプログラムです。この場合、図形オブジェクトに対するイベント処理では、どうしても対処できないことがあります。それは、何もないところにタッチして新たな図形を描くという操作です。

 前回のような、いったん描いたあとの図形に対するイベント処理では、前述のような操作は実現できません。何も図形が描かれていないところでユーザーが触れたことを検知したくても、本当に何もなければイベントを受け取るものもないわけです。つまり、何も処理することができません。

 そこで登場するのが「キャンバス」です。キャンバスは、一般のキャンバスと同様、絵を描くための下地、画用紙のようなものです。何も見えていないようで、実は画面いっぱいにキャンバスが配置されているのです。今回は、まずこのキャンバスの性質を探っていくことにします。

共有キャンバスとは?

 これまでに、「Shapes」のテンプレートを選んで作成したプレイグラウンドを使っていく中で、画面の下辺、またはキーボードの上辺に表示される入力候補に「Canvas」という単語があったのに気づいた人もいるでしょう。それが今回の主役のキャンバスです。Canvasも、CircleやRectangleなどと同様に、名前が大文字で始まっているので、一種のクラス(タイプ)であることがわかります。それなら、一般の図形クラスと同じようにして、キャンバスのオブジェクトを作成できるのでしょうか? 試してみましょう。

let canvas = Canvas()

 このように書いて実行しようとするとエラーとなってしまいます。

Canvasは、特殊なクラスなので、普通の方法でオブジェクトを作成することはできません。エラーとなってしまいます

 このエラー意味を簡単に言えば、Canvasを初期化する機能、言い換えればオブジェクトを作成する機能は、外部からはアクセスできない、ということになります。つまり一般のプログラムからは使えないのです。

カテゴリートップへ

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!