Deaktivieren Sie die touch-events auf bestimmte Bereiche des iPhone-Bildschirm
Möchte ich deaktivieren Sie berührt alle Bereiche des Bildschirms abgesehen von ein bestimmtes paar Punkte (e.g-Tasten). I. e. Ich will nicht 'touchesBegan' auslösen, wenn ich Tippen Sie auf alles andere als eine Taste. Aufruf
self.view.userInteractionEnabled = NO;
hat den gewünschten Effekt nicht registrieren Berührungen, aber dann kann ich natürlich nicht Tippen Sie auf beliebige Tasten. Ich habe im Grunde wollen Sie die-Taste, um noch zu arbeiten, auch wenn es 5 Punkte berühren Sie den Bildschirm, d.h. alle touch-Eingaben verwendet wurden, und der button repräsentiert den 6. Platz.
Ist das möglich?
Habe ich versucht, Sie eine Ansicht mit userInteraction deaktiviert unter meine Tasten, aber er registriert noch berührt, wenn der Benutzer tippt auf den Bildschirm. Es scheint der einzige Weg zu deaktivieren Sie die touch-Registrierung wird auf dem gesamten Bildschirm (auf dem Eltern-UIView).
UPDATE:
Ich habe versucht, mit gesture recognizers, um alle touch-events, und ignorieren diejenigen, die nicht qualifizieren. Hier ist mein code:
@interface ViewController : UIViewController <UIGestureRecognizerDelegate>
...
- (void)viewDidLoad
{
[super viewDidLoad];
UIGestureRecognizer *allRecognizer = [[UIGestureRecognizer alloc] initWithTarget:self action:nil];
allRecognizer.delegate = self;
[self.view addGestureRecognizer:allRecognizer];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
CGPoint coords = [touch locationInView:self.view];
NSLog(@"Coords: %g, %g", coords.x, coords.y);
if (coords.y < 200) {
[self ignoreTouch:touch forEvent:nil];
return TRUE;
}
return FALSE;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"%i touch(es)", [touches count]);
}
Jedoch ist der Bildschirm immer noch "liest" das berührt, wenn ich statt 5 Finger nach unten, die 6. man wird nicht ausgelöst durch drücken einer Taste...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie eine unsichtbare UIButton und legen Sie Sie zwischen der Ansicht, dass, sollten Sie nicht registrieren Berührungen und UIButtons, dass sollte immer noch aktiv sein.
Nun müssen Sie die unsichtbare Schaltfläche 'userInteractionEnabled':
Was wirklich zählt in dieser Lösung ist, dass beide - die unsichtbare und die sichtbare Schaltflächen sind direkte subviews der VC-Ansicht.
Können Sie download ein Beispiel-Projekt aus meiner dropbox:
https://dl.dropboxusercontent.com/u/99449487/DontTapThat.zip
Aber dieses Beispiel verhindert, dass der Umgang mit bestimmten Berührungen. Komplett ignorieren-Eingang ist technisch nicht möglich: Drittanbieter-apps sind nicht verantwortlich für die erkennen Eingang. Sie sind nur verantwortlich für Umgang Eingang. Die Erkennung der touch-Eingabe ist fertig, iOS.
Der einzige Weg, den Aufbau einer Fall wie Sie es beschreiben, in den Kommentaren ist zu hoffen, dass iOS nicht interpretieren Sie den Eingang Ihres Gehäuses als "finger", weil es am ehesten zu bedecken eine Fläche, die viel größer als ein finger.
Also zusammenfassend ist der beste Weg zu ändern, das material des Falles, den Sie zu bauen oder geben es zumindest einen nicht-leitfähigen Beschichtung. Von einem third-party-Entwickler Sicht gibt es keine Möglichkeit, erreichen Sie Ihre Ziele mit software, wenn es notwendig ist, für 5 Finger, wie beschrieben, in den Kommentaren.
Gibt es einige Methoden, die in UIView, die Sie überschreiben können:
Dieser soll verhindern, dass zu call touchBegin-und andere Methoden.
Grüße.
Habe ich eine schöne Lösung für dieses. Was auch immer der Bereich, den Sie ausblenden möchten der Interaktion legen Sie ein transparentes Taste auf der Oberseite der Fläche.
touchesBegan ist eine Standard-Methode, so muss es die ganze Zeit anrufen, wenn Sie das touch passiert auf Sicht, so ist es kein Ausweg, Aber man kann immer noch eine Sache festlegen
für das Objekt, das Sie brauchen nicht berühren kann, dies könnte Hilfe, die Sie mit der von Ihnen gewünschten Ausgabe.
Haben Sie versucht, mit einer UIScrollView als hintergrund ? ich.e der Bereich, wo Sie nicht möchten, dass touch-Ereignisse ausgelöst werden.
UIScrollView nicht, rufen Sie den touch-Methoden.
Können Sie hinzufügen
UIImageView
Kontrolle über das Gebiet, wo Sie möchten, deaktivieren Sie die touch-Ereignis.Sie können hinzufügenUIImageView
Objekt als top -self.view
Untersichten.Beispiel
//Bereich -- ist, dass die Fläche, wo Sie möchten, deaktivieren Sie die touch auf
self.view
Du touchDelegate wird, rufen Sie immer auf diese Weise, aber wenn Sie tun, eine bestimmte Aufgabe auf touch, dann können Sie Ihre Aufgabe gerne auf diese Weise.