【问题标题】:Limiting text in a UITextView限制 UITextView 中的文本
【发布时间】:2010-09-29 12:15:38
【问题描述】:

我正在尝试将文本输入限制在可可触摸中的 UITextView 中。我真的想限制行数而不是字符数。到目前为止,我有这个来计算行数:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if([text isEqualToString:@"\n"]) {
        rows++;
    }
    NSLog(@"Rows: %i", rows);
    return YES;
}

但是,如果自动换行而不是用户按回车键,这将不起作用。有没有办法像检查“\n”一样检查文本是否被换行?

谢谢。

【问题讨论】:

    标签: cocoa-touch


    【解决方案1】:

    不幸的是,使用 NSString -stringWithFont:forWidth:lineBreakMode: 不起作用 - 无论您选择哪种换行模式,文本都会以小于当前宽度的宽度换行,并且任何溢出行的高度都变为 0。要获得真实的身材,请将绳子放入比您需要的更高的框架中 - 然后您将获得比实际身高更大的高度。

    注意我的软糖(从宽度中减去 15)。这可能与我的观点有关(我有另一个观点),所以你可能不需要它。

    - (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString*)aText
    {
            NSString* newText = [aTextView.text stringByReplacingCharactersInRange:aRange withString:aText];
    
            // TODO - find out why the size of the string is smaller than the actual width, so that you get extra, wrapped characters unless you take something off
            CGSize tallerSize = CGSizeMake(aTextView.frame.size.width-15,aTextView.frame.size.height*2); // pretend there's more vertical space to get that extra line to check on
            CGSize newSize = [newText sizeWithFont:aTextView.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
    
            if (newSize.height > aTextView.frame.size.height)
                {
                [myAppDelegate beep];
                return NO;
                }
            else
                return YES;
    }
    

    【讨论】:

    • 嗨,简 - 我知道这篇文章已经很老了,但看起来这与我在 [这里] (stackoverflow.com/questions/5605226/…) 面临的问题非常相似。这是您在此处描述的问题,还是您针对稍微不同的问题的解决方案?
    • 在 iOS 7 中,我发现 UITextView 的以下边距和填充值可能是您需要使用“tallerSize”的原因:textContainerInsettextContainer.lineFragmentPadding。见UITextView reference
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2015-04-20
    • 2011-07-10
    • 2011-01-30
    • 2012-12-13
    相关资源
    最近更新 更多