2016-06-16 11 views
-2

NSattributedstringを追加してテキストビューのテキストにイメージを追加しました。NSattributedstringを含む文字列をチェックする方法

テキストビューは、ユーザーが編集できます。

テキストビューのテキストにNSattributedstringがまだ含まれていることを確認するにはどうすればよいですか?

UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:14.0]; 
NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; 
NSString *temp1 = [NSString stringWithFormat:@"%@\r\n\r\n",contenttextview.text]; 
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:temp1 attributes:attrsDictionary]; 
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init]; 
textAttachment.image = [self imageWithImage:chosenImage scaledToSize:CGSizeMake(200, 200)]; 
NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment]; 
[attributedString replaceCharactersInRange:NSMakeRange(attributedString.length -1, 1) withAttributedString:attrStringWithImage]; 
contenttextview.attributedText = attributedString; 

によって

どのように私はそれを確認することができますか?

+0

あなたは 'NSAttributedString'あなたを追加した場合、そのは同様に働いて、あなたのコード、
はあなたのコードを使用して生成された私のログを、確認するために私が追加した画像、
Image

ですそれが範囲を知っている。範囲にまだ属性があるかどうかを確認できます。 – Desdenova

+0

textView.attributedText lengthは、その中にある文字列のすべての数を返します。 –

+0

属性には属性がありますか? –

答えて

0

使用このコードにはイメージを持っている意味containImageリターンYESは、あなたがイメージの前後にスペースを持たなければならないことを覚えていれば、

..

//First convert your string to array 
NSArray *array = [contenttextview componentsSeparatedByString:@" "]; 
for(id object in array) 
{ 
    //Cycle thru array and use below method that is any part of string is image? If return yes even single time that means there is a image. 
    BOOL containImage = [object canBeConvertedToEncoding:NSASCIIStringEncoding]; 
    if(containImage) 
     { 
      NSLog(@"containImage: NO"); 
     } 
     else 
     { 
      NSLog(@"containImage: YES"); 
     } 
} 

//This method will be used to check if string does contain image 
- (BOOL)stringContainsEmoji:(NSString *)string { 
    __block BOOL returnValue = NO; 
    [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock: 
    ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { 

     const unichar hs = [substring characterAtIndex:0]; 
     // surrogate pair 
     if (0xd800 <= hs && hs <= 0xdbff) { 
      if (substring.length > 1) { 
       const unichar ls = [substring characterAtIndex:1]; 
       const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000; 
       if (0x1d000 <= uc && uc <= 0x1f77f) { 
        returnValue = YES; 
       } 
      } 
     } else if (substring.length > 1) { 
      const unichar ls = [substring characterAtIndex:1]; 
      if (ls == 0x20e3) { 
       returnValue = YES; 
      } 

     } else { 
      // non surrogate 
      if (0x2100 <= hs && hs <= 0x27ff) { 
       returnValue = YES; 
      } else if (0x2B05 <= hs && hs <= 0x2b07) { 
       returnValue = YES; 
      } else if (0x2934 <= hs && hs <= 0x2935) { 
       returnValue = YES; 
      } else if (0x3297 <= hs && hs <= 0x3299) { 
       returnValue = YES; 
      } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) { 
       returnValue = YES; 
      } 
     } 
    }]; 

    return returnValue; 
} 
hereから細かいコードを手に入れました。ブール変数の

これは、他のユーザーのためにある、<> あなたは、コードの下に使うよりも、テキストに画像を追加したい場合は...アレイ用

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"Good Image"]; 
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init]; 
textAttachment.image = [UIImage imageNamed:@"image.png"]; 
CGFloat scaleFactor = 0; 
textAttachment.image = [UIImage imageWithCGImage:textAttachment.image.CGImage scale:scaleFactor orientation:UIImageOrientationUp]; 
NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment]; 
[attributedString replaceCharactersInRange:NSMakeRange(5, 1) withAttributedString:attrStringWithImage]; 
self.aTextView.attributedText = attributedString; 

NSLog

array: (
    Good, 
    "\Ufffc", 
    Image 
) 

NSLog

contianImage: NO 
contianImage: YES 
contianImage: NO 

そして、これは

2016-06-16 12:52:15.030 Imagetest[2394:109009] array: (
    " 
\n 
\Ufffc" 
) 
2016-06-16 12:52:15.031 Imagetest[2394:109009] contianImage: YES 
+0

これは絵文字のみをテストすることができます..... –

+0

いいえ、画像で確認したことがありますか、テキストで画像を追加する方法を確認してください – Dilip

+0

@WaitakJongは働いていますあなたのために? – Dilip

関連する問題