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

  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012
  • sWooZie

    sWooZie

    9 ŞUBAT 2006
  • Video Copilot

    Video Copilo

    21 EYLÜL 2006