Flyttbare etikett - ios

stemmer
1

Jeg har et krav om å flytte en etikett rundt bare når brukeren berører på den og drar. Jeg kan ikke finne ut om brukeren rørt over at etiketten eller ikke. Jeg har brukt touchesMoved metode (Swift 2). Nedenfor er min kode

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
    super.touchesBegan(touches as Set<UITouch>, withEvent: event) 
    let touch = touches.first

  if (touch!.view) == (moveLabel as UIView) // moveButton is my label
  {
    location = touch!.locationInView(self.view)
    moveLabel.center = location
  }
}

Når jeg gjør dette, er min etiketten ikke flytte :( noen hjelpe meg vær så snill

Publisert på 10/06/2016 klokken 11:56
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Jeg hadde tenkt på spørsmålet ditt, og dette er mitt resultat, må du underklasse UILabelog i initdu trenger for å sette userInteractionEnabled = trueog deretter overstyre denne metoden override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) også, er min kode dette:

Swift 3.1 kode

import UIKit

class draggableLabel: UILabel {


    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.layer.borderWidth = 1
        self.layer.borderColor = UIColor.red.cgColor
        self.isUserInteractionEnabled = true
    }



    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        let touch = touches.first;
        let location = touch?.location(in: self.superview);
        if(location != nil)
        {
        self.frame.origin = CGPoint(x: location!.x-self.frame.size.width/2, y: location!.y-self.frame.size.height/2);
        }
    }

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

    }

}

Swift 2.2 kode

import UIKit

class draggableLabel: UILabel {


    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.layer.borderWidth = 1
        self.layer.borderColor = UIColor.redColor().CGColor
        self.userInteractionEnabled = true
    }

    override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let touch = touches.first;
        let location = touch?.locationInView(self.superview);
        if(location != nil)
        {
        self.frame.origin = CGPointMake(location!.x-self.frame.size.width/2, location!.y-self.frame.size.height/2);
        }
    }

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

    }

}

Håper dette hjelper deg, for meg fungerer bra, dette er hvordan det fungerer

skriv bildebeskrivelse her

Svarte 10/06/2016 kl. 16:08
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more