ios UITextView设置行距
2016-04-29 11:55
447 查看
由于uitextview没有设置行距的方法,所以我们要在uitextview有变化的时候随时改变固定uitextview的行距,而且每当我们输入的是中文的时候,需要判断我们输入的是拼音还是中文再来改变行距,因此我们可以尝试下面的方法:
1、.h文件我们必须先加上 UITextViewDelegate的代理
2、.m文件我们就使用下面方法
- (void) viewDidLoad
{
[super
viewDidLoad];
UITextView* tTextView = nil;
tTextView = [[UITextView alloc] init];
tTextView.frame = CGRectMake(left, left, tView.width-left*2,
tView.height-left*2);
tTextView.backgroundColor = [UIColor clearColor];
tTextView.delegate = self;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 10;// 字体的行间距
NSDictionary *attributes = @{
NSFontAttributeName:[UIFont systemFontOfSize:15],
NSParagraphStyleAttributeName:paragraphStyle
};
tTextView.attributedText = [[NSAttributedString alloc] initWithString:@"内容" attributes:attributes];
// [tTextView setText:s_Default_FK];
// [tTextView setFont:[UIFont FontOfSize:14.f]];
[tTextView setTextColor:[UIColor hexColor:@"aaaaaa"]];
[tTextView setShowsHorizontalScrollIndicator:NO];
[tTextView setShowsVerticalScrollIndicator:NO];
[tView addSubview:tTextView];
tTextView.returnKeyType = UIReturnKeyDone;
// [tTextView becomeFirstResponder];
_tTextView = tTextView;
[[NSNotificationCenter
defaultCenter]addObserver:self
selector:@selector(textFiledEditChanged:)
name:@"UITextFieldTextDidChangeNotification"
object:_tTextView];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super
viewWillDisappear:YES];
[[NSNotificationCenter
defaultCenter]removeObserver:self
name:@"UITextFieldTextDidChangeNotification"
object:_tTextView];
}
#define kMaxLength 20
-(void)textFiledEditChanged:(NSNotification *)obj{
UITextField *textField = (UITextField *)obj.object;
NSString *toBeString = textField.text;
NSString *lang = [[UITextInputMode
currentInputMode] primaryLanguage];
// 键盘输入模式
if ([lang
isEqualToString:@"zh-Hans"]) {
// 简体中文输入,包括简体拼音,健体五笔,简体手写
UITextRange *selectedRange = [textField
markedTextRange];
//获取高亮部分
UITextPosition *position = [textField
positionFromPosition:selectedRange.start
offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (!position) {
// textview
改变字体的行间距
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle
alloc] init];
paragraphStyle.lineSpacing =
10;//
字体的行间距
NSDictionary *attributes =
@{
NSFontAttributeName:[UIFont
systemFontOfSize:14],// 字体的大小
NSParagraphStyleAttributeName:paragraphStyle
};
_tTextView.attributedText = [[NSAttributedString
alloc] initWithString:_tTextView.text
attributes:attributes];
}
// 有高亮选择的字符串,则暂不对文字进行统计和限制
else{
}
}
// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
// else{
// if (toBeString.length > kMaxLength) {
// textField.text = [toBeString substringToIndex:kMaxLength];
// }
// }
}
#pragma mark - -------- UITextViewDelegate ----------
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
if ([[textView.text
deleteSpace] isEqualToString:s_Default_FK]) {
textView.text =
@"";
textView.textColor = [UIColor
blackColor];
}
return
YES;
}
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString
*)text
{
if ([text
isEqualToString:@"\n"]) {
[textView resignFirstResponder];
if (k_Is_Empty(textView.text)) {
[textView setText:s_Default_FK];
[textView setTextColor:[UIColor
lightGrayColor]];
}
return
NO;
}
return
YES;
}
@end
1、.h文件我们必须先加上 UITextViewDelegate的代理
2、.m文件我们就使用下面方法
- (void) viewDidLoad
{
[super
viewDidLoad];
UITextView* tTextView = nil;
tTextView = [[UITextView alloc] init];
tTextView.frame = CGRectMake(left, left, tView.width-left*2,
tView.height-left*2);
tTextView.backgroundColor = [UIColor clearColor];
tTextView.delegate = self;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 10;// 字体的行间距
NSDictionary *attributes = @{
NSFontAttributeName:[UIFont systemFontOfSize:15],
NSParagraphStyleAttributeName:paragraphStyle
};
tTextView.attributedText = [[NSAttributedString alloc] initWithString:@"内容" attributes:attributes];
// [tTextView setText:s_Default_FK];
// [tTextView setFont:[UIFont FontOfSize:14.f]];
[tTextView setTextColor:[UIColor hexColor:@"aaaaaa"]];
[tTextView setShowsHorizontalScrollIndicator:NO];
[tTextView setShowsVerticalScrollIndicator:NO];
[tView addSubview:tTextView];
tTextView.returnKeyType = UIReturnKeyDone;
// [tTextView becomeFirstResponder];
_tTextView = tTextView;
[[NSNotificationCenter
defaultCenter]addObserver:self
selector:@selector(textFiledEditChanged:)
name:@"UITextFieldTextDidChangeNotification"
object:_tTextView];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super
viewWillDisappear:YES];
[[NSNotificationCenter
defaultCenter]removeObserver:self
name:@"UITextFieldTextDidChangeNotification"
object:_tTextView];
}
#define kMaxLength 20
-(void)textFiledEditChanged:(NSNotification *)obj{
UITextField *textField = (UITextField *)obj.object;
NSString *toBeString = textField.text;
NSString *lang = [[UITextInputMode
currentInputMode] primaryLanguage];
// 键盘输入模式
if ([lang
isEqualToString:@"zh-Hans"]) {
// 简体中文输入,包括简体拼音,健体五笔,简体手写
UITextRange *selectedRange = [textField
markedTextRange];
//获取高亮部分
UITextPosition *position = [textField
positionFromPosition:selectedRange.start
offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (!position) {
// textview
改变字体的行间距
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle
alloc] init];
paragraphStyle.lineSpacing =
10;//
字体的行间距
NSDictionary *attributes =
@{
NSFontAttributeName:[UIFont
systemFontOfSize:14],// 字体的大小
NSParagraphStyleAttributeName:paragraphStyle
};
_tTextView.attributedText = [[NSAttributedString
alloc] initWithString:_tTextView.text
attributes:attributes];
}
// 有高亮选择的字符串,则暂不对文字进行统计和限制
else{
}
}
// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
// else{
// if (toBeString.length > kMaxLength) {
// textField.text = [toBeString substringToIndex:kMaxLength];
// }
// }
}
#pragma mark - -------- UITextViewDelegate ----------
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
if ([[textView.text
deleteSpace] isEqualToString:s_Default_FK]) {
textView.text =
@"";
textView.textColor = [UIColor
blackColor];
}
return
YES;
}
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString
*)text
{
if ([text
isEqualToString:@"\n"]) {
[textView resignFirstResponder];
if (k_Is_Empty(textView.text)) {
[textView setText:s_Default_FK];
[textView setTextColor:[UIColor
lightGrayColor]];
}
return
NO;
}
return
YES;
}
@end
相关文章推荐
- build.xml文件的粗浅理解
- Openwrt编译 `XZ5.2`not found (required by xzcat) 解决方法
- AsyncQueryHandler的使用
- iOS 修改UIImage的尺寸
- iOS 继承 UIWindow 的密码保护功能
- iOS 将UIImage裁剪成圆形
- UITextField中放置UIImage 和placeholder 字体、颜色、大小、位置
- Easyui Treegrid改变默认图标的方法
- iOS开发UI篇—无限轮播(循环利用)
- ESXi安装异常:VMware ESXi requires the Excute Disable/No Exceute CPU feature to be enabled
- Could not allocate CursorWindow size due to error -12 错误解决方法
- ShortGuid--简单便捷高效不区分大小写的短唯一ID
- Permutation Sequence
- 使用NSOperation以及NSOperationQueue
- POJ 2785 4 Values whose Sum is 0(排序+二分搜索)
- UILabel UIButton 混合问题 -iOS初学
- Android TextView实现滚动跑马灯效果Marquee
- /var/spool/clientmqueue目录~清理
- Easyui 之 Treegrid 笔记
- SoapUI命令行方式运行