Ich bin neu in XCode und Swift ... Allerdings dachte ich, ich versuche es ... Ich hätte gerne zwei dragbare Images und wenn sie kollidieren, sollte ein Alarmfenster auftauchen. .Ich habe den Code unten angehängt ... wenn ich laufe den Code ich die folgende Warnung erhalten:UIPanRecognizer: Kann nicht vorhanden sein AlertController
UIPanRecogniserSwift [10047: 300286] Achtung: Es wurde versucht, auf dem präsentieren bereits
präsentiert ich bin nicht sicher, wie das zu beheben ist. Bereits versucht, die if-Anweisung an verschiedenen Stellen im Code ohne Erfolg zu setzen. Es besteht auch die Möglichkeit, auf die Schaltfläche "Zurücksetzen" im Warnfenster für einen Befehl zuzugreifen (d. H. Wenn der Benutzer Zurücksetzen drückt, bringt Bild 1 an den Ort x, y)?
import UIKit
class ViewController: UIViewController {
@IBOutlet var yellowBox: UIView!
@IBOutlet var Dice: UIImageView!
@IBAction func panYellowView(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
self.ifCollided()
}
/*func showAlert() {
let alertController = UIAlertController(title: "Collided", message: "You have collided",preferredStyle: UIAlertControllerStyle.Alert)
alertController .addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
alertController .addAction(UIAlertAction(title: "Reset", style: .Cancel, handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
}*/
@IBAction func panDiceView(sender: UIPanGestureRecognizer) {
let translation = sender.translationInView(self.view)
sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y)
sender.setTranslation(CGPointZero, inView: self.view)
}
@IBAction func ifCollided() {
if CGRectIntersectsRect(yellowBox.frame, Dice.frame){
//showAlert()
let alertController = UIAlertController(title: "Collided", message: "You have collided",preferredStyle: UIAlertControllerStyle.Alert)
alertController .addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
alertController .addAction(UIAlertAction(title: "Reset", style: .Cancel, handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
//showAlert()
}
}
override func viewDidLoad() {
super.viewDidLoad()
//self.ifCollided()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
hey thanks so much zu nennen :) seine Arbeit jetzt völlig in Ordnung !! Sie fügte hinzu: Dice.addGestureRecognizer (UIPanGestureRecognizer (Ziel: Selbst, Aktion: #selector (self.panDiceView (_ :)))) yellowBox.addGestureRecognizer (UIPanGestureRecognizer (Ziel: Selbst, Aktion: #selector (Selbst. panYellowView (_ :)))) unter viewDidLoad. Warum hast du das getan? weil es scheint, dass meine Warnungen aufgrund davon aufgetreten sind – CatiaV5
Wenn dies hilft, bitte akzeptieren Sie dies als Antwort, und helfen Sie anderen, die richtigen Lösungen zu finden –
Glücklich zu helfen :) –