Ich habe eine vertikale UIScrollView, die mehrere große Schaltflächen hat, die den größten Teil des Bildlaufs belegen. Aus diesem Grunde habe ich habe die Scroll-Sicht nach diesem Beitrag ios 8 - buttons in horizontal scroll view intercepting pan event - scroll does not work) und überschreiben Sie die folgende Klassenmethode Unterklasse:Subclassed UIScrollView erkennt Berührungen innerhalb von Schaltflächen, reagiert aber ansonsten nicht auf Benutzerinteraktion
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
static int count = 0;
count++;
NSLog(@"calling this function 2");
NSLog(@"count = %d", count);
UITouch *touch = [touches anyObject];
if(touch.phase == UITouchPhaseMoved)
{
NSLog(@"UITouchPhaseMoved so returning no");
return NO;
}
else
{
NSLog(@"returning super");
NSLog(@"returning whatever this value is %d 0/1", [super touchesShouldBegin:touches withEvent:event inContentView:view]);
[super touchesShouldBegin:touches withEvent:event inContentView:view];
return [super touchesShouldBegin:touches withEvent:event inContentView:view];
}
}
Wenn ich meine Anwendung ausführen, diese obige Funktion wird aufgerufen, wenn eine Taste abgegriffen wird, aber die Funktion wird nicht aufgerufen, wenn ich irgendwo innerhalb der Bildlaufansicht innerhalb oder außerhalb einer Schaltfläche wähle. Und die Bildlaufansicht scrollt nicht, unabhängig davon, wo ich versuche zu ziehen.
Hier ist alles meines Code auf die Scroll-Ansicht verwandt (es ist mit IB eingerichtet):
smallView.scrollEnabled = YES;
smallView.contentSize = CGSizeMake(smallView.frame.size.width, smallView.frame.size.height*1.4);
smallView.delegate = self;
Und hier ist die Tasten-bezogenen Code in dem Fall, dass es ankommt:
NSArray *buttonsArray = @[button1, button2, button3, button4, button5];
for (int i = 0; i < [buttonsArray count]; i++) {
UIButton *button = buttonsArray[i];
button.tag = i+1;
[button addTarget:self action:@selector(p_motivationButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentCenter;
}
Warum ist mein Bildlauf nicht scrollen und nicht einmal anrufen touchesShouldBegin
?
y u nicht zurück, wenn der touchphase bewegt wird? –
@TejaNandamuri Ich weiß nicht, das kann sich ändern, aber die Funktion tritt nie in diesen Zweig der Logik ein. – helloB
Wo hast du die berührte Methode implementiert? Die Berührungen beginnen Methode kann nicht berührt berührt Ereignis abfangen. Es wird nur den Startpunkt des Berührungsereignisses erkennen. –