/ / Dotknij, aby ukryć pasek narzędzi - iphone, ios, uitoolbar, uitouch

Dotknij, aby ukryć pasek narzędzi - iphone, ios, uitoolbar, uitouch

Chcę ukryć i pokazać pasek narzędzi po dotknięciu obszaru CGRectMake (130, 0, 60, 480)

bez używania UIGestureRecognizer ponieważ jego efektem są moje inne poglądy

jeśli dotkniesz raz obszaru, pasek narzędzi powinien się ukryć, a jeśli pasek narzędzi jest ukryty, powinien pokazać pasek narzędzi

próbowałem tego

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (mainToolbar.hidden == YES) {
mainToolbar.hidden=NO;
}
else if(mainToolbar.hidden == NO){
[mainToolbar setHidden:YES];
}
}

ale pasek narzędzi ukrywania, gdy dotykasz tylko paska narzędzi

dzięki......

Odpowiedzi:

1 dla odpowiedzi № 1

Wpisz swój kod w widoku, w którym dodano pasek narzędzi. Otrzymasz lokalizację dotyku za pomocą tego kodu:

UITouch *touch = [[event allTouches] anyObject];

CGPoint location = [touch locationInView: touch.view];

A następnie sprawdź, czy dotyk jest w twoim prostym użyciu CGRectContainsPoint: funkcjonować.

Innym podejściem jest po prostu przycisk na wymaganym obszarze. Mam nadzieję że to pomoże


0 dla odpowiedzi nr 2

Metoda daje NSSet wszystkich dotknięć na ekranie. Możesz użyć tego, aby dostosować swoje zachowanie do dotknięć. Na przykład:

//This will change the state of whether mainToolbar is hidden or not.  In the case of multiple touches, it will change the property if any touch is in the CGRect area.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
CGRect testRect = CGRectMake(130, 0, 60, 480);
for (UITouch *touch in touches) {
if (CGRectContainsPoint(testRect, [touch locationInView:self.view])) {
mainToolbar.hidden = !mainToolbar.hidden;
}
}
}

Lub jeśli chcesz, aby akcja była wykonywana tylko po naciśnięciu jednego przycisku i ignorowana, jeśli użytkownik dotyka wieloma palcami, możesz to sprawdzić:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
CGRect testRect = CGRectMake(130, 0, 60, 480);
if ([touches count] == 1) {
//If there is only one touch, we check for that.  Otherwise, we ignore it.
UITouch *touch = [touches anyObject];
if (CGRectContainsPoint(testRect, [touch locationInView:self.view])) {
mainToolbar.hidden = !mainToolbar.hidden;
}
}
}

Za pomocą czterech funkcji możesz zrobić naprawdę fajne rzeczy touchesBegan: touchesMoved: touchesEnded: i touchesCanceled:.