UIButton verplaatsen met aanraken

Ik gebruik :

[button addTarget:self action:@selector(moved:) forControlEvents:UIControlEventTouchDragInside];

Functie code verplaatsen:

- (IBAction)moved:(id)sender {
UIButton *t = sender;

UITouch *touch = [touch self];

CGPoint touchPoint = [touch locationInView: self];

t.center = touchPoint;
}

Dus wanneer ik de knop begin te verslepen, verschijnt deze plotseling in de linkerbovenhoek (Coord: 0; 0). Ik dacht dat dit een probleem was omdat CGPoint touchPoint = [touch locationInView: self]; op de verkeerde manier werkt. Ik heb 3 klassen: viewController, die het implementeren van:

view = [[MainView alloc] initWithFrame:[self.view frame] ];
[self.view addSubview:view];

waar weergave object van klasse mainview is (subklasse uiview). In mainview maak ik bezwaar tegen klasse Button (subklasse uiview):

[self addSubview:but];

Vervolgens maak ik in de klasse-knop UIButton, associëren met gebeurtenis UIControlEventTouchDragInside (zie begin van bericht).

Dus hoe moet ik mijn code corrigeren, die knop bewegen om het punt juist aan te raken ???

Postscriptum Sorry voor mijn vreselijke Engels =)

1

1 antwoord

Als je echt wilt vasthouden aan UIControlEventTouchDragInside, gebruik dan het onderstaande fragment. Persoonlijk zou ik in plaats daarvan UIPanGestureRecognizer gebruiken .

- (IBAction)moved:(UIButton *)sender {
    UITouch *touch = [touch self];
    CGPoint touchPoint = [touch locationInView: sender.superview];
    sender.center = touchPoint;
}
2
toegevoegd
Hoe heb je je probleem opgelost?
toegevoegd de auteur Philipp Schmid, de bron
Bartosz Ciechanowski - bedankt voor het goede idee! Maar het lijkt op hetzelfde probleem; bijvoorbeeld mijn aanraakpunt (x; y), maar het wordt herkend als (x-100; y-100)! ?? In mijn vorige projecten was alles goed, maar nu heb ik geen idee wat er is gebeurd.
toegevoegd de auteur Yaz, de bron
Bedankt! Ik loste het probleem op een andere manier op ...
toegevoegd de auteur Yaz, de bron
Ik zou meteen naar UIPanGestureRecognizer gaan :)
toegevoegd de auteur Bartosz Ciechanowski, de bron