タッチでUIButtonを動かす

私は使用しています:

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

機能コード移動:

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

UITouch *touch = [touch self];

CGPoint touchPoint = [touch locationInView: self];

t.center = touchPoint;
}

だから、私がボタンをドラッグし始めると、突然左上隅に現れます(Coord:0; 0)。 CGPoint touchPoint = [touch locationInView:self]; が正しく動作しないため、これは問題だと思いました。 私は3つのクラスを持っています:viewControllerは、の実装を行います:

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

viewはclass mainview(サブクラスuiview)のオブジェクトです。 mainviewで私はクラスのオブジェクトを作るButton(subclass uiview):

[self addSubview:but];

次に、クラスButton Iでは、UIButtonを作成し、イベントUIControlEventTouchDragInsideに関連付けます(投稿の冒頭を参照)。

だから私はどのように私のコードを修正する必要があります、そのボタンはポイントを正しくタッチに移動???

P.S.私のひどい英語のために申し訳ありません=)

1

1 答え

本当にUIControlEventTouchDragInsideに固執したい場合は、以下のスニペットを使用してください。個人的には、代わりに UIPanGestureRecognizer を使用します。

- (IBAction)moved:(UIButton *)sender {
    UITouch *touch = [touch self];
    CGPoint touchPoint = [touch locationInView: sender.superview];
    sender.center = touchPoint;
}
2
追加された
どのように問題を解決しましたか?
追加された 著者 Philipp Schmid,
Bartosz Ciechanowski - 良いアイデアのおかげで!しかし、それは同じ問題のように見えます。例えば、私のタッチポイント(x; y)でも、(x-100; y-100)として認識されます。私の以前のプロジェクトではすべてうまくいったが、今は何が起こったのか分からない。
追加された 著者 Yaz,
ありがとう!私は別の方法で問題を解決した...
追加された 著者 Yaz,
私はすぐにUIPanGestureRecognizerに行くだろう:)
追加された 著者 Bartosz Ciechanowski,