SORU
12 EKİM 2013, CUMARTESİ


Tespit iOS bir UİTextView atfedilen metin üzerinde musluklar

Bir NSAttributedString gösteren bir UİTextView var. Bu dize dokunduğunuz zaman bir eylemi gerçekleştirmek böylece geri çağırdı olsun tappable, böyle yapmak istiyorum bu sözcükleri içerir. Bu UİTextView bir URL musluklar Algıla ve benim temsilci arayabilir farkındayım, ama bu URL değil mi...

İOS7 ve TextKit gücü ile bu artık mümkün olması gerektiğini, ancak herhangi bir örnek bulamıyorum ve nereden başlayacağınızı emin değilim gibi geliyor bana.

Anlıyorum ki bu artık mümkün oluşturmak için özel öznitelikleri string (gerçi yapmadım henüz), ve belki de bu olacak yararlı için tespit eğer bir sihirli kelime oldu vurdu? Her durumda, ben hala dokunun ve dokunun oluştu hangi algılayan yakalamak için nasıl şimdi yok.

Herkes bir çözüm var mı?

İOS 6 uyumluluğu gerekli olduğunu unutmayın.

CEVAP
12 EKİM 2013, CUMARTESİ


Ben sadece Diğerleri biraz daha fazla yardım etmek istedi. Shmidt ardından gelen tam olarak benim özgün soru sormuştum olarak yapmak mümkün değil cevap.

1) özel öznitelikleri tıklanabilir kelimeler için uygulanan ile ilişkili bir dize Oluşturun. örn.

NSAttributedString* attributedString = [[NSAttributedString alloc] initWithString:@"a clickable word" attributes:@{ @"myCustomTag" : @(YES) }];
[paragraph appendAttributedString:attributedString];

2) Bu dize görüntülemek için bir UİTextView Oluşturun ve bir UİTapGestureRecognizer ekleyin. Kolu dokunun:

- (void)textTapped:(UITapGestureRecognizer *)recognizer
{
    UITextView *textView = (UITextView *)recognizer.view;

    // Location of the tap in text-container coordinates

    NSLayoutManager *layoutManager = textView.layoutManager;
    CGPoint location = [recognizer locationInView:textView];
    location.x -= textView.textContainerInset.left;
    location.y -= textView.textContainerInset.top;

    // Find the character that's been tapped on

    NSUInteger characterIndex;
    characterIndex = [layoutManager characterIndexForPoint:location
                                           inTextContainer:textView.textContainer
                  fractionOfDistanceBetweenInsertionPoints:NULL];

    if (characterIndex < textView.textStorage.length) {

        NSRange range;
        id value = [textView.attributedText attribute:@"myCustomTag" atIndex:characterIndex effectiveRange:&range];

        // Handle as required...

        NSLog(@"%@, %d, %d", value, range.location, range.length);

    }
}

Nasıl yapılacağını bilince kolay oluyor!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006
  • Pituvision

    Pituvision

    11 Mart 2006
  • wowchick16

    wowchick16

    17 Mart 2007