Comment trouver une position ou obtenir un rect de n'importe quel mot en textview et placer des boutons dessus?
Je suis en train de travailler sur une histoire de l'app.Où Nous avons besoin de fournir des quiz.
Maintenant, je vais avoir une histoire et il y a des blancs ou les mots cachés, au cours de cette histoire.
Chaque fois que je clique sur que le mot caché,je vais obtenir le 4 options pour répondre à ça.
J'ai essayé en plaçant le bouton sur les mots,Mais ce serait seulement quand je suis à l'aide de quelques statique
position.
Je veux juste savoir comment puis-je obtenir le cadre de ce mot,j'ai besoin de se cacher ,de sorte que
J'pouvez placer un bouton au dessus de cela et pouvez le cacher.
Vous pouvez voir l'image ci-dessous..
Toutes les réponses seraient appréciés
Solution:-
Ce sera le travail après iOS 5 seulement pas en dessous !
- (CGRect)frameOfTextRange:(NSRange)range inTextView:(UITextView *)textView
{
UITextPosition *beginning = textView.beginningOfDocument;
UITextPosition *start = [textView positionFromPosition:beginning offset:range.location];
UITextPosition *end = [textView positionFromPosition:start offset:range.length];
UITextRange *textRange = [textView textRangeFromPosition:start toPosition:end];
CGRect rect = [textView firstRectForRange:textRange];
return [textView convertRect:rect fromView:textView.textInputView];
}
Grâce
Voir une image de plus pour les erreurs:
source d'informationauteur Sabby
Vous devez vous connecter pour publier un commentaire.
UITextView
adopte leUITextInput
protocole. Ce protocole a la méthode-firstRectForRange:
qui vous dira le rectangle couvrant une plage de caractères. Si la plage de caractères s'étend sur plusieurs lignes, il faut l'appeler à plusieurs reprises. La première fois, il vous donnera la première rect et vous dire ce qu'gamme qui couvre. Ensuite, vous réglez la plage que vous vous dites au sujet d'être les caractères restants vous êtes intéressé à vous et recommencez.>>>Édité...
Cette méthode est de les appeler lorsque vous sélectionnez ou tapez sur le textview texte, mais vous pouvez utiliser cette méthode dans l'un de UITextView
Delegate
MéthodeEspoir, cela vous aidera à...profitez-en
La suite de Ken Thomas' réponse, à partir d'iOS 6 et au-delà de la
UITextInput
protocole comprend la méthode suivante:- (NSArray *)selectionRectsForRange:(UITextRange *)range
(Voir le document de référence).
Le résultat est un tableau de
UITextSelectionRect
s, qui ont un tas d'informations sur les plages de sélection dans le texte... Selon la façon dont vous souhaitez utiliser les rectangles de texte en morceaux, la méthode ci-dessus peut être utile.(UITextSelectionRect de référence).
Note: de mon utilisation avec
UITextView
le tableau deUITextSelectionRect
s retourné contient, ce qui pourrait être interprété comme, deux autres rectangles de sélection. Ce sont les deux derniers de sélection des rectangles dans le tableau et je suppose qu'ils correspondent à la commencer et fin positions de la sélection. La sélection de ces rectangles ont chacun une largeur de0
et lacontainsStart
/containsEnd
propriétés sont définies en conséquence.