Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 650 - longPressed()はカスタムメソッド


次のTable Viewのチュートリアルを拡張しています。

yataiblue.hatenablog.com

UILongPressGestureRecognizerをsimpleTableViewに実装させたので、action:で指定しているカスタムメソッド、「longPressed()」をViewControllerコード内に加えます。

func longPressed(gesture: UIGestureRecognizer) { 

// ここに重要なコードが加わっていきます。

}

まずこのメソッドがどういう時に呼ばれるかコンソールで確認したいので、次のコードを加えます。

print("This method's just called.")

そして私が読んでいるチュートリアルでは次のようにコードが続いていました。

func longPressed(gesture: UIGestureRecognizer) {
   print("This method's just called.")
   let longPress = gesture as! UILongPressGestureRecognizer
   let state = longPress.state
...

このメソッドの引数はUILongPressGestureRecognizerの上位クラスUIGestureRecognizerになっているので、使用時にダウンキャストするステップが必要になります。

しかし、どうしてこんな手間をかけるのでしょうか?

少し考えてみると次のようにコードしたらスッキリすると思います。

func longPressed(longPress: UILongPressGestureRecognizer) {
   print("This method's just called.")
   let state = longPress.state
...

プログラマーの皆さんは、私には計り知れない知識の元でコーディングしているので理由が分かりません。教えて頂けないでしょうかm(_ _)m

今日はここまで。