J'ai un TextView et un bouton caché dans un UIView, et j'essaie de détecter lorsque l'utilisateur fait défiler l'utilisateur vers le bas d'une longue liste de texte et d'afficher le bouton caché lorsqu'il atteint le bas. J'ai vu de vieux messages sur la façon dont il a été fait à Obj-C à l'aide de ScrollViewDidscroll, mais pas vraiment sûr de la façon de le faire avec Swift, ou comment le faire avec un TextView au lieu d'une vision de Scroll. Toute aide serait excellente car je ne suis pas allé très loin avec celui-ci.
Jusqu'à présent, c'est ma tentative de traduire le poste Obj-C à Swift, mais cela n'a pas fonctionné pour moi, en fait je suis pas même sûr que la fonction est appelée: p> merci pour toute aide à l'avance :) p> p>
3 Réponses :
Si le bouton est dans le dernier point de vue (Self.View), je pense que vous devez vérifier que votre point de contenu de contenu est au bas du contenu. Donc, vous pourriez probablement faire quelque chose comme:
Désolé, je suis toujours nouveau à Swift. Où dois-je correspondre à cela?
(void) ScrollViewDidendDecelerating: (Uiscrollview *) ScrollView {} Cette méthode est une méthode de déléguée de vue de défilement. Ne collez pas ce code à l'intérieur de n'importe quel bloc de fonction / méthode. C'est lui-même une fonction, de sorte que la collez-la n'importe où à l'intérieur de la classe (après viendDidLoad and View apparaisse).
(void) ScrollViewDidendDeceleratier: (UISCrollView *) ScrollView {Float BotSedged = ScrollVief.Contententoffset.y + Scrollview.frame.Size.Height; Si (Botgedge> = ScrollView.Contentsize.Height) {Self.YourbuttonName.Choriz = True}}
Je l'ai essayé, mais je reçois une erreur disant: Déclaration attendue.
(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height if (bottomEdge >= scrollView.contentSize.height) { self.yourButtonName.hidden = true } }
Coller ce code. L'erreur de déclaration attendue vient en cas d'erreur de syntaxe de code.
Dois-je changer de texte? Je reçois toujours la même erreur, même après avoir renommé le bouton.
@Maksym MusIienko ScrollView.ContentOffset.y + ScrollView.bounds.Height
uitextview code> est la sous-classe de
Uiscrollview code> et si vous regardez à la déclaration, vous verrez que c'est
uiscrollviewelegate code> par défaut, afin que vous puissiez Supprimez le
Uiscrollviewelegate code> à la déclaration de votre contrôleur. Au lieu de cela, faites votre contrôleur
uitextviewdeelegate code> qui lui permet d'appeler ScrollViewDidscrollMethod.
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView: UITextView! {
didSet {
textView.delegate = self
}
}
@IBOutlet weak var button: UIButton! {
didSet {
button.hidden = true
}
}
func scrollViewDidScroll(scrollView: UIScrollView) {
button.hidden = scrollView.contentOffset.y + scrollView.bounds.height < scrollView.contentSize.height
}
}
Je suis relativement nouveau à Swift, j'apprécie également comment a déclaré l'état de départ et le délégué pour le bouton TextView et le bouton dans les instructions Iboutlet plutôt que dans la vue ViewDidLoad car je n'étais pas au courant, on pourrait le faire, donc merci!
1st - @iboutlet var TEXTVIEW: Uiscrollview! , mais Func ScrollViewDidscroll (Textv: UitextView) Les deux sont différents. Essayez à la fois ScrollView ou TextView. Ce code fonctionnera.
Bonjour, je l'ai réparé dans l'exemple. Essayé dans mon code aussi, mais cela n'a pas fonctionné. Merci quand même.
Est-ce que cela a appelé la méthode Didscroll? et vérifier la prise et les délégués sont connectés pour l'UITEXTVIEW.
J'ai essayé une instruction d'impression dans la fonction ScrollViewDidscroll, mais elle n'est pas appelée même si la sortie est connectée et que le TextView.delegate est défini dans la vue ViewDidLoad :(
Définissez la déléguée dans XIB ou dans Storyboard vers la vue Mainvc.
J'avais déjà activé dans le storyboard, donc ce n'était pas le problème :(
Je me demande si cela ne fonctionne pas parce que c'est une vue texte?