- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
NSInteger maxLineNum = 4;
NSString *textString = @"Text";
CGSize fontSize = [textString sizeWithAttributes:@{NSFontAttributeName:textView.font}];
NSString* newText = [textView.text stringByReplacingCharactersInRange:range withString:text];
CGSize tallerSize = CGSizeMake(textView.frame.size.width-15,textView.frame.size.height*2);
CGSize newSize = [newText boundingRectWithSize:tallerSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName: textView.font}
context:nil].size;
NSInteger newLineNum = newSize.height / fontSize.height;
if ([text isEqualToString:@"\n"]) {
newLineNum += 1;
if ((newLineNum <= maxLineNum)
&& newSize.width < textView.frame.size.width-15)
return YES;
}else{
return NO;
//限制UITextView的行数,
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
func textView(textView:
UITextView, shouldChangeTextInRange range: NSRange, replacementText text:
String) -> Bool {
let newText = (textView.text
as NSString).stringByReplacingCharacters
//textview的最大行数根据需要改动
tv.setSelected(false);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//当内容只有一行时,如果不做此拦截,会发生内容抖动现象
if(!isOverFlowed(tv))
- (void)textViewDidChange:(UITextView *)textView{
CGRect textViewFrame = textView.frame;
CGSize textSize = [textView sizeThatFits:CGSi
这就需要我们判断当前的文案是否大于两行,但是UIKIt是没有这样的接口供我们使用的,
我们自己来计算,展示两行所用的高度,完全展示所用的高度,两个一对比,就可以判断出是否
大于两行了
extern CGFloat YYheightForAttributeStringWithLabelFixLinespacingAndNumberOfLines(NSAttributedString *str, CGFloat width, int nu
最近在做评论这块的功能,产品提了一个这样的需求,当用户评论的内容大于5行的时候添加一个可以折叠的小按钮,点击按钮可以显示全部内容,再次点击按钮又把评论内容全部显示出来。刚看到这个需求的时候感觉还蛮简单,于是一阵噼里啪啦之后,噢,发现不行,感觉蛮有意思的,哈哈,于是就有了以下的文章。来-----走起。
第一步:分析
1.既然是评论内容,我们索性就拿TextView来显示就好了。要做到折叠的效果,...
UITextView *textView = [[UITextView alloc] init]; [textView setFont:tableCellMsgFont]; textView.text=fromText; CGSize sizeThatFitsTextView = [textView sizeThatFits:CGSizeMake(cell.comment.fra...
这里一开始是使用代理方法监听字数的,然而这个方法当达到最大值200以后,虽然在英文状态下无法输入,但是在拼音联想状态下却依然会计算字数,并且由于拼音和拼音间存在空格,所以在高亮状态下也无法正常计算。
所以这里就采用了通知,这里计算还是比较准的,而