2009-03-06 9 views
9

Je veux afficher un texte avec beaucoup de lignes. J'ai ajouté une étiquette multiligne à une vue de défilement, mais elle n'a rien montré. On dirait que ce n'est pas la bonne façon d'utiliser la vue déroulante. Comment utiliser l'affichage déroulant pour que les utilisateurs puissent faire glisser vers le bas pour voir plus de texte?Comment utiliser l'affichage déroulant sur iPhone?

+4

Je n'ai rien à ajouter, mais votre nom est génial. – Patrick

+0

@Patrick .. oui .. :) – rockey

Répondre

10

Vous pouvez simplement utiliser un UITextView. C'est un enfant de UIScrollView, et si vous définissez sa propriété text à une quantité de texte qui ne rentre pas dans son cadre, la vue deviendra scrollable.

21

Apple UIScollView documentation est assez bon, vous devriez commencer là et comprendre la classe. Pensez à un Scrollview comme une grande surface de vue sur laquelle l'écran glisse *. Vous pouvez ajouter des sous-vues à la vue défilante, puis faire défiler, c'est comme positionner l'écran sur la vue défilante - l'écran agit comme une fenêtre que vous pouvez voir jusqu'à une partie du contenu de la vue défilante ci-dessous. Pour ce faire, un scrollview a quelques propriétés supplémentaires sur un UIView normal - mais il est comme un UIView dans un respect impressionnant: il ne rend pas de contenu directement lui-même. Vous devez ajouter une sous-vue pour dessiner votre texte. Une vue défilante est configurée et affichée exactement de la même manière qu'une UIView - c'est-à-dire que vous définissez le cadre pour l'ajouter à une autre vue et pour afficher le texte dont vous avez besoin pour ajouter des sous-vues à UIScrollView. Pour configurer une requête UIScrollView de base que vous demandez, vous devez la créer comme une vue normale en plein écran: définissez la taille de l'image comme étant la même que celle de la fenêtre et ajoutez la scrollview à la fenêtre en tant que sous-vue. Ensuite, faites un grand UITextView pour contenir votre texte. La vue UIText peut être aussi grande que vous le souhaitez - en particulier, elle peut être plus grande que l'écran. Définissez la propriété contentSize de UIScrollView comme étant la même que l'image de UITextView, puis ajoutez la vue UIText en tant que sous-vue de UIScrollView. Une fois que vous avez cette opération, vous pouvez déplacer le contenu automatiquement avec la propriété contentOffset, contrôler le zoom et configurer un délégué pour observer les événements de défilement.

* plus précisément, sur lequel le cadre glisse, mais je suppose que vous faites un UIScrollView en plein écran. Je suis sûr que vous pouvez généraliser si vous voulez une vue plus petite.

1

J'ai utilisé UIScrollView de cette façon pour un volet d'instructions dans une de mes applications. Cela a marché mais j'étais mécontent du résultat. Je suis ensuite passé à l'utilisation d'UIWebView et j'ai été beaucoup plus satisfait du résultat. Il gère la taille de la vue de défilement automatiquement, j'obtiens toutes les capacités de formatage de HTML et je peux avoir des liens qui vont vers des informations supplémentaires (ou des sites externes) sans rien ajouter d'un autre fichier HTML et peut-être du code délégué. Voici le code je (et j'ajouté le fichier HTML à mon application comme ressource):

NSString *path = [[NSBundle mainBundle] pathForResource:@"instructions" ofType:@"html"]; 
NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:path]; 
NSString *htmlString = [[NSString alloc] initWithData: [readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding]; 
[self.instructionsView loadHTMLString:htmlString baseURL:nil]; 
1

U peut se référer à ce site http://www.edumobile.org/iphone/iphone-programming-tutorials/scrollview-example-in-iphone/

U suivre l'étape par étape pour faire le point de vue de défilement dans l'iphone ... bonne chance :)

+0

Vous semblez être un véritable utilisateur de SO plutôt qu'un spammeur. Donc, c'est un peu étonnant pourquoi vous avez posté la même réponse trois fois. Vous devriez supprimer quelques-uns de ces doublons avant d'être pénalisé. – APC

+0

@APC vous avez dit pénalisé. J'ai déjà supprimé la seule pénalité vient de la communauté qui déprécie ses réponses. – Will

+0

@Will - les personnes signalent également ses réponses comme spam. Donc jennifer fuit rep de deux façons, bien que je suppose qu'elle ne sera pas frapper les "six drapeaux" de la magie maintenant, et les drapeaux de spam existants disparaîtront après deux jours. – APC

Questions connexes