/ / Berühren, um die Symbolleiste zu verbergen - iphone, ios, uitoolbar, uitouch

Berühren, um die Symbolleiste zu verbergen - iphone, ios, uitoolbar, uitouch

Ich möchte die Symbolleiste ausblenden und anzeigen, wenn Sie in den Bereich tippen CGRectMake (130, 0, 60, 480)

ohne zu benutzen UIGestureRecognizer weil seine Wirkung meine anderen Ansichten

Wenn Sie einmal im Bereich berühren, sollte die Werkzeugleiste ausgeblendet werden und wenn die Werkzeugleiste ausgeblendet ist, sollte die Werkzeugleiste angezeigt werden

Ich habe das versucht

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

Aber seine Werkzeugleiste wird ausgeblendet, wenn nur die Werkzeugleiste berührt wird

Vielen Dank......

Antworten:

1 für die Antwort № 1

Schreiben Sie Ihren Code in die Ansicht, in der Sie die Symbolleiste hinzugefügt haben. Mit diesem Code erhalten Sie die Touch-Position:

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

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

Und dann prüfen Sie, ob die Berührung in Ihrem Rect ist CGRectContainsPoint: Funktion.

Ein anderer Ansatz ist einfach eine Schaltfläche auf dem gewünschten Bereich. Hoffe das hilft


0 für die Antwort № 2

Die Methode gibt Ihnen ein NSSet aller Berührungen auf dem Bildschirm. Sie können damit Ihr Verhalten für Berührungen anpassen. Beispielsweise:

//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;
}
}
}

Oder wenn Sie nur möchten, dass die Aktion ausgeführt wird, wenn eine Berührung durchgeführt wird, und sie ignorieren, wenn der Benutzer mit mehreren Fingern anfasst, würden Sie Folgendes überprüfen:

-(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;
}
}
}

Sie können einige wirklich coole Dinge mit nur den vier Funktionen tun touchesBegan: touchesMoved: touchesEnded: und touchesCanceled:.