Zacznij od touchesBegan
, touchesMoved
, touchesEnded
. Zastąp je w swojej podklasie UIView, a będziesz na najlepszej drodze do nauki systemu zdarzeń. Możesz uzyskać współrzędne zdarzenia w następujący sposób:
- (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event
{
float x = [[touches anyObject] locationInView:self].x;
float y = [[touches anyObject] locationInView:self].y;
}
Następnie jest mnóstwo rzeczy do konwersji współrzędnych między różnymi widokami i tak dalej. Gdy już to zrozumiesz, możesz pracować z rzeczami, które już znalazłeś i które są potrzebne.
Do przeciągnięcia/upuszczenia potrzebny będzie wykrywacz gestów panoramicznych. Możesz użyć selektora locationInView:
w , aby dowiedzieć się, gdzie jesteś w danym momencie.
dodać swój gest rozpoznawania jak tak, to nie z rzeczy docelowego akcji, staraliśmy:
UIPanGestureRecognizer *dragDropRecog = [[UIPanGestureRecognizer alloc] initWithTarget:yourView action:@selector(thingDragged:)];
[yourView addGestureRecognizer:dragDropRecog];
potem trzeba wdrożyć selektor thingDragged:
w widoku:
- (void) thingDragged:(UIPanGestureRecognizer *) gesture
{
CGPoint location = [gesture locationInView:self];
if ([gesture state] == UIGestureRecognizerStateBegan) {
// Drag started
} else if ([gesture state] == UIGestureRecognizerStateChanged) {
// Drag moved
} else if ([gesture state] == UIGestureRecognizerStateEnded) {
// Drag completed
}
}
You Będę tłumaczył widok przeciągany w zmienionym bicie i obsługę kropli w zakończonej sekcji.
użytkownik musi dodać to w viewDidLoad: UIPanGestureRecognizer * Panner = [[UIPanGestureRecognizer alloc] initWithTarget: self działanie: @selector (panWasRecognized:)]; [_viewaddGestureRecognizer: panner]; –
Możesz też dodać narzędzie do rozpoznawania gestów w swoim scenorysie lub XIB. –
To prawda, ale kiedy podążyłem za twoją odpowiedzią, nie wiedziałem, że musi, więc nie działa ze mną: D –