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];

мұнда қарау - сыныптың негізгі көрінісінің нысаны (subclass uiview). Негізгі көріністе мен сыныптың нысанын жасай аламын (қосалқы сынып):

[self addSubview:but];

Содан кейін сыныпта 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, көзі