2017-03-01 8 views
0

Ich habe eine .xib-Datei mit ein paar Schaltflächen erstellt und an die EingabeAccessoryView angefügt. Ich habe diesen Bereich scrollbar gemacht mit scrollView, allerdings muss ich zusätzliche Funktionen hinzufügen, indem ich Buttons (Pfeile) benutze. Wenn Sie auf den Vorwärtspfeil klicken, sollte er zum Ende gehen und der Zurückpfeil würde die ursprüngliche Position annehmen.Setting ContentOffset mit den Tasten

first position - start second position - end

Ich habe ganze Scroll in UI ohne Code. Es funktioniert gut, diese Schaltflächen sind oben auf dieser Ansicht. Ich dachte daran, IBAction dieser Schaltflächen zu verwenden und ContentOffSet zu ändern. Ich kämpfe mit der Umsetzung. Ich werde für einige Tipps dankbar sein.

Klasse für die Implementierung:

#import "KCSearchInputAccessoryView.h" 

@implementation KCSearchInputAccessoryView 

+ (KCSearchInputAccessoryView *)viewFromNib { 
NSBundle *bundle = [NSBundle bundleForClass:[self class]]; 
return [[bundle loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil] lastObject]; 
} 

- (IBAction)backBtnTapped:(id)sender { 

} 

- (IBAction)forwardBtnTapped:(id)sender { 

} 

@end 

Antwort

1

Sie können es mit Content ändern sich, aber ...

Angenommen, Sie Verweise auf die Tasten haben, ein besserer Ansatz kann unter Verwendung von func scrollRectToVisible(_ rect: CGRect, animated: Bool)

IBAction func rightButton(sender: AnyObject) { 
    self.theScrollView.scrollRectToVisible(postsButton.frame, animated: true) 
} 

IBAction func leftButton(sender: AnyObject) { 
    self.theScrollView.scrollRectToVisible(chatsButton.frame, animated: true) 
} 

Dies würde auch die Tasten über "schieben".

Edit: bekam so verwendet, um Menschen mit Swift ...

Objective-C-Version ... und stattdessen das einzelne Button-Frames zu verwenden, erstellen Sie einfach eine rect am Anfang oder am Ende der Scroll-Ansicht Inhalt:

- (IBAction)backBtnTapped:(id)sender { 
    CGRect r = CGRectMake(0.0, 0.0, 1.0, 1.0); 
    [_theScrollView scrollRectToVisible:r animated:YES]; 
} 
- (IBAction)forwardBtnTapped:(id)sender { 
    CGRect r = CGRectMake(_theScrollView.contentSize.width - 1, 0.0, 1.0, 1.0); 
    [_theScrollView scrollRectToVisible:r animated:YES]; 
} 

Beispielprojekt hier: https://github.com/DonMag/ScratchPad

+0

Die interessanten Ansatz ist. Ich habe meine Frage bearbeitet und Klasse mit Implementierung hinzugefügt. In .h Datei fügen Sie diese Schaltflächen als IBOutlet und so myScrollView, damit es sichtbar für .m? Ich bin mir nicht sicher, wie ich diese Funktionalität von scrollRectToVisible erhalten soll. – Vuko

+0

Ich gehe davon aus, dass Sie die Chats, People, SuperUsers usw. auf irgendeine Weise verbunden haben? – DonMag

+0

Nun, nicht in diesem Moment. Habe sie beim Erstellen dieser Ansicht einfach in der Benutzeroberfläche hinzugefügt. Ich werde die Funktionalität später hinzufügen, wenn das Scrollen beendet ist. – Vuko