ios – 在UITextView上设置最大行数

我想限制我的iPad应用程序的用户在pdf上输出时最多输入20行.用户在UITextView中输入文本(如下所示),然后将其转换为pdf文档.

我意识到我将不得不做一些计算,具体取决于输入时输入的文本.有什么方法可以帮助我吗? textFieldDidEndEditing只允许我在输入后进行检查.

另外,因为这会更简单,有没有办法限制UITextField的行数?

解决方法

您接近textFieldDidEndEditing委托方法.

更好的方法是响应textView:shouldChangeTextInRange:replacementText:delegate方法,然后查看即将发生的更改是否会导致允许更多行.

这是一个如何做到这一点的例子:

- (BOOL) textView:(UITextView *)textView
    shouldChangeTextInRange:(NSRange)range replacementText:(Nsstring *)text
{
    static const NSUInteger MAX_NUMBER_OF_LInes_ALLOWED = 3;

    NSMutableString *t = [NSMutableString stringWithString:
        self.textView.text];
    [t replaceCharactersInRange: range withString: text];

    NSUInteger numberOfLines = 0;
    for (NSUInteger i = 0; i < t.length; i++) {
        if ([[NSCharacterSet newlineCharacterSet]
                characterIsMember: [t characteratIndex: i]]) {
            numberOfLines++;
        }
    }

    return (numberOfLines < MAX_NUMBER_OF_LInes_ALLOWED);
}

我在https://github.com/st3fan/StackOverflow/tree/master/TextViewWithLineLimit上在线提供了一个完整的示例..在iOS 7.0.2上测试过.请享用!

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...