0

내가이 UITextView이 있고 inputAccessory보기에 내가 굵게, 기울임 꼴 등의 사용자 유형을 할 수있는 몇 가지 버튼이빈 TextView에 속성을 추가하는 방법은 무엇입니까? 내 응용 프로그램에서

내가 굵은 글꼴의 속성을 추가하고 대담한 버튼을 누릅니다 때 선택한 범위가 항상 (0,0)이므로 UItextView에 텍스트가 없습니다. 선택한 범위로 무엇을 사용해야하는데 앞으로 텍스트를 굵게 입력 할 수 있습니다. 그리고 굵게 버튼을 다시 탭하면 굵은 글꼴 속성을 없애고 사용자가 일반 글꼴로 다시 입력 할 수 있도록해야합니다.

-(void)addOrRemoveFontTraitWithName:(NSString *)traitName andValue:(uint32_t)traitValue { 

    NSRange selectedRange = [self.commentsTextView selectedRange]; 


    NSDictionary *currentAttributesDict; 
    if (selectedRange.location==0 && selectedRange.length==0) { 
     //currentAttributesDict = [self.commentsTextView.textStorage attributesAtIndex:selectedRange.location effectiveRange:nil]; 
    } 
    else{ 
     currentAttributesDict = [self.commentsTextView.textStorage attributesAtIndex:selectedRange.location 
                        effectiveRange:nil]; 
    } 

    UIFont *currentFont; 
    if (currentAttributesDict.count >0) { 
     currentFont = [currentAttributesDict objectForKey:NSFontAttributeName]; 
    } 
    else{ 
     currentFont = [UIFont fontWithName:@"Sans-Regular" size:20.0f]; 
    } 
    //currentFont = [currentAttributesDict objectForKey:NSFontAttributeName]; 
    UIFontDescriptor *fontDescriptor = [currentFont fontDescriptor]; 

    NSString *fontNameAttribute = [[fontDescriptor fontAttributes] objectForKey:UIFontDescriptorNameAttribute]; 
    UIFontDescriptor *changedFontDescriptor; 

    if ([fontNameAttribute rangeOfString:traitName].location == NSNotFound) { 
     uint32_t existingTraitsWithNewTrait = [fontDescriptor symbolicTraits] | traitValue; 
     changedFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:existingTraitsWithNewTrait]; 
    } 
    else{ 
     uint32_t existingTraitsWithoutTrait = [fontDescriptor symbolicTraits] & ~traitValue; 
     changedFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:existingTraitsWithoutTrait]; 
    } 

    UIFont *updatedFont = [UIFont fontWithDescriptor:changedFontDescriptor size:0.0]; 

    NSDictionary *dict = @{NSFontAttributeName: updatedFont}; 

    /*NSMutableDictionary * combined = [[NSMutableDictionary alloc]init]; 
    [combined setObject:updatedFont forKey:NSFontAttributeName]; 
    [combined setObject:[NSNumber numberWithInt:1] forKey:NSUnderlineStyleAttributeName];*/ 
    NSRange newRange = NSMakeRange(0, 10000); 
    [self.commentsTextView.textStorage beginEditing]; 
    [self.commentsTextView.textStorage setAttributes:dict range:newRange]; 
    [self.commentsTextView.textStorage endEditing]; 
} 
+0

문자열에 속성을 nil과 같게 추가 하시겠습니까? – iBug

+0

좀 더 설명해 주시겠습니까? – Ashutosh

+0

문자열의 길이가 0 인 경우 속성을 추가 할 수 없습니다. – iBug

답변

0

내가 당신을 도움이 될 setTypingAttributes:를 사용하여 같아요 여기 내가 사용하고있는 코드입니다. 동일한 내용은 here으로 설명됩니다.

+0

알았습니다! 하지만 어떻게 내가 여러 개의 특성을 추가 할 것이라고. 한 가지 경우에 사용자가 굵게 및 기울임 체 버튼을 함께 누르면 텍스트는 굵게 및 기울임 꼴로 표시되어야합니다. 사용자가 3 개의 굵은 이탤릭체와 밑줄을 모두 선택한 경우에도 마찬가지입니다. – Ashutosh

+0

그게 좋은 것. Pls는 아래 링크를 확인하십시오. http://code4app.net/ios/Rich-Text-View/51cd08686803face6a000000 – iOS

+0

지금 Mac 시스템에서 해당 응용 프로그램을 확인할 필요가 없습니다. 그래서 나는 그 링크가 당신을 도울 것이라고 생각합니다. – iOS