基本的な考え方は、私は、ユーザーがいない画面上の任意の場所に、UIViewの内のどこかをタップすると、音声ファイルを再生したいテキストラベルやボタンのコンテンツを作成するために、別のページに移動したいということです。画面をタップした場所に何かを作成していますか?スウィフト
- 画面上をタップして、感謝されるだろう、私は正しい方向に指摘取得するためにも、いくつかの擬似コード作成
- 事はあなたが
をタップしていたのUIViewに表示何かを作成します。
基本的な考え方は、私は、ユーザーがいない画面上の任意の場所に、UIViewの内のどこかをタップすると、音声ファイルを再生したいテキストラベルやボタンのコンテンツを作成するために、別のページに移動したいということです。画面をタップした場所に何かを作成していますか?スウィフト
をタップしていたのUIViewに表示何かを作成します。
あなたのViewControllerにTapGestureRecognizer
を入れて、あなたの関数にそのviewTapped
アクションを接続します。ジェスチャ認識プログラムはViewControllerによって所有されているので、画面上のタップポイントがターゲットビュー内にあるかどうかを検出する必要があります。
開始コードスニペット:
self.view
はViewControllerのビューです。
self.targetView
のViewController内のターゲット図です。
UILabel
が含まれている以下の
UIView
で始まる
@IBAction func viewTapped(tapGestureRecognizer: UITapGestureRecognizer) {
// detect the tapped view
let loc = tapGestureRecognizer.locationInView(self.view)
if (CGRectContainsPoint(self.targetView.frame, loc)) {
// the target view was tapped
}
}
:
class Controller1: UIViewController {
@IBOutlet weak var discCoverView: UIView!
@IBOutlet weak var listenToMeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let discoCoverViewGesture = UITapGestureRecognizer(target:self, action:#selector(Controller1.discoCoverViewTap(_:)))
self.discCoverView.addGestureRecognizer(discoCoverViewGesture)
}
func discoCoverViewTap(recognizer: UITapGestureRecognizer) {
// detect the location tapped by user
let tapLocation = tapGestureRecognizer.locationInView(self.discCoverView)
if self.listenToMeLabel.frame.contains(tapLocation) {
// user tap the listenToMeLabel
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller2 = storyboard.instantiateViewControllerWithIdentifier("controller2") as Controller2
controller2.songTitle = self.listenToMeLabel.text
self.presentViewController(controller2, animated: true, completion: nil)
}
}
}
コントローラ2が使用できます
import AVFoundation
class Controller2: UIViewController {
@IBOutlet weak var listenToMeBtn: UIButton!
var songTitle: String! = "no title"
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
listenToMeBtn.setTitle(songTitle, forState: UIControlState.Normal)
listenToMeBtn.addTarget(self, action: #selector(Controller2.listenToMeBtnTap(_:)), forControlEvents: UIControlEvents.TouchUpInside)
listenToMeBtn.setNeedsLayout()
}
func listenToMeBtnTap(sender:UIButton) {
print ("click \(sender.titleForState(UIControlState.Normal))")
let url = NSBundle.mainBundle().URLForResource(songTitle, withExtension: "mp3")
if (url == nil) {
print("Could not find song file: \(songTitle)")
return
}
do { backgroundMusicPlayer = try AVAudioPlayer(contentsOfURL: url!, fileTypeHint: nil) }
catch let error as NSError { print(error.description) }
if let player = backgroundMusicPlayer {
player.volume = 0.7
player.prepareToPlay()
player.play()
}
}
}
最も簡単な方法:
class ViewController: UIViewController {
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch in touches {
let location = touch.locationInView(self.view)
let newView = UIView(frame: CGRectMake(location.x, location.y, 100,100)
newView.backgroundColor = UIColor.redColor()
self.view.addSubview(newView)
}
}
次の2つを頼みます別のものS:あなたは、ユーザータップした後に別のページに行くように依頼フレーズの最初の、そしてあなたは、ユーザーがタップした同じビューでタップした結果を表示するように頼むあなたのリストの第三のポイントインチあなたは本当に何をしたいのか分かりませんが、私はそのフレーズに従いました。 –