質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

1646閲覧

swift touchended 質問の続

dynamite_nakaji

総合スコア42

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/04/11 08:21

編集2016/04/11 08:24

私は今このコードを使用させてもらっていて、わからないことがあったので
質問させていただきます。

以下私が使っているコードです!
ボタンをタップしたらUIViewを出して
ボタンをスワイプしたらそのボタンが指に沿って移動する・・・
要件を満たしているか分かりませんが、ここからアレンジすればやりたい事ができるようになると思います。
下記のコードをViewControllerにそのまま貼り付けると動くと思います。
ボタンを押すと左に赤いViewがaddされます、そしてUIButtonはドラッグで移動できます。
import UIKit
class ViewController: UIViewController {
var viewCount: CGFloat = 0
let button = CustomButton(type: .Custom)

override func viewDidLoad() { super.viewDidLoad() // ボタンを生成 button.frame = CGRectMake(100, 100, 200, 50) button.setTitle("Button", forState: .Normal) button.setTitleColor(UIColor.blueColor(), forState: .Normal) button.backgroundColor = UIColor.yellowColor() button.addTarget(self, action: #selector(ViewController.buttonPressed(_:)), forControlEvents: .TouchUpInside) button.userInteractionEnabled = true button.tag = 999 button.vc = self view.addSubview(button) } func buttonPressed(sender: UIButton) { if !button.isMoveing { // 赤いViewを画面に追加 let v = UIView(frame: CGRectMake(10, 10 + viewCount * 40 , 30, 30)) v.backgroundColor = UIColor.redColor() view.addSubview(v) viewCount += 1 } } override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { // タッチイベントを取得 let touchEvent = touches.first! let tag = touchEvent.view?.tag if tag == 999 { moveView(touchEvent, vi: button) } } func moveView<T: UIView>(touchEvent: UITouch, vi: T) { // ドラッグ前の座標 let preDx = touchEvent.previousLocationInView(self.view).x let preDy = touchEvent.previousLocationInView(self.view).y // ドラッグ後の座標 let newDx = touchEvent.locationInView(self.view).x let newDy = touchEvent.locationInView(self.view).y // ドラッグしたx座標の移動距離 let dx = newDx - preDx // ドラッグしたy座標の移動距離 let dy = newDy - preDy // 画像のフレーム var viewFrame: CGRect = vi.frame // 移動分を反映させる viewFrame.origin.x += dx viewFrame.origin.y += dy vi.frame = viewFrame }

}
// CustomButton Class
class CustomButton: UIButton {

var vc: UIViewController! var isMoveing: Bool = false override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { super.touchesMoved(touches, withEvent: event) isMoveing = true vc.touchesMoved(touches, withEvent: event) } override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { super.touchesEnded(touches, withEvent: event) isMoveing = false vc.touchesEnded(touches, withEvent: event) }

}

このコードを使っていて、touchEndedの時にある座標だったら〜みたいなことをしています。
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
↑これが使えなくて困っています。何かミスをしているのでしょうか?
touchEnded以外のやり方があるのでしょか?
よくわからないです。分かりやすくお願い致します.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {

↑これが使えなくて困っています。何かミスをしているのでしょうか?

ViewControllerのコードの中に以下を書いてみてください。
指を離した時に座標が表示されます。

swift

1override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 2 3 // タップした座標を取得する 4 let touchEvent = touches.first! 5 print(touchEvent.locationInView(self.view)) 6}

投稿2016/04/11 12:12

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dynamite_nakaji

2016/04/12 07:43

何となくわかりました!! いつもありがとうございます(^ ^)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問