내가이 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];
}
문자열에 속성을 nil과 같게 추가 하시겠습니까? – iBug
좀 더 설명해 주시겠습니까? – Ashutosh
문자열의 길이가 0 인 경우 속성을 추가 할 수 없습니다. – iBug