Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone:限制UITextView中的文本输入_Iphone_Objective C_Uitextview - Fatal编程技术网

iPhone:限制UITextView中的文本输入

iPhone:限制UITextView中的文本输入,iphone,objective-c,uitextview,Iphone,Objective C,Uitextview,我试图限制用户在UITextView中可以拥有的行数。让我们考虑只允许4行(即在下面的示例中,在给定的UITExtVIEW中宽度为200)中,给定的字体不能超过84像素的高度。 我对其进行了编码,以实现限制,并且效果良好: - (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString *)aText { NSString* ne

我试图限制用户在UITextView中可以拥有的行数。让我们考虑只允许4行(即在下面的示例中,在给定的UITExtVIEW中宽度为200)中,给定的字体不能超过84像素的高度。

我对其进行了编码,以实现限制,并且效果良好:

    - (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString *)aText {

    NSString* newText = [aTextView.text stringByReplacingCharactersInRange:aRange withString:aText];


    CGSize strSize = [newText sizeWithFont:textView.font constrainedToSize:CGSizeMake(200, 10000) lineBreakMode:UILineBreakModeWordWrap];

if (strSize.height > 100)

    {

        return NO; // can't enter more text
    }
    else
        return YES; // let the textView know that it should handle the inserted text
    }
到目前为止还不错。当我试图偷偷摸摸地在每次返回前输入尽可能多的“x”时,问题就开始了。在这种情况下,我可以得到额外的4行。。。这显然是我不想允许的。我假设这与lineBreakMode有关?有任何理由改变这一点吗?我在文档中找不到太多东西(但话说回来,我通常很难理解它们)

我附上了几个截图来说明这个问题。如有任何建议,我将不胜感激。非常感谢



在我看来,UITextView中启用了换行功能,您无法对其进行太多更改(请告诉我我错了)。如果您只需要4行,那么UIScrollView中可能有4个UITextField(将返回键发送到Next)。或者,当每行渲染矩形的长度超过一行的高度时,减小ContentSize

另请参见(我希望我正确理解了您的问题…)

如果仔细看,在
UITextView
中有一个空白。如果不小心使用
sizeWithFont:
,它可能会在特殊情况下返回意外结果(因为您不尊重文本视图的边距)


您应该1)调整在
sizeWithFont:
中使用的宽度以尊重文本视图的边距,或者2)使用辅助
UITextView
对象来精确计算内容大小。

谢谢,但我确实需要使用UITextView。我真的不明白你说的减少百分位数是什么意思?此外,您提供的链接(谢谢!)建议您可以通过减少选中文本的宽度来解决问题,但这也不是理想的做法。谢谢你抽出时间!非常感谢你的想法。你知道我怎么知道确切的利润是多少吗?这只是一个实验吗?赖斯特:这确实有效!非常感谢,你是对的。这一切都归结为减少了200位。尽管如此,我还是想知道是否有一种方法可以通过编程而不是猜测来找出页边距。@n.evermind:我不知道您是否可以通过编程来找出页边距-我认为使用公共API是不可能的。顺便说一下,选项2在苹果的开发者论坛上有介绍。(哦,如果这个答案解决了你的问题,请确保你接受它:p)当然!我没有首先标记它,因为我需要等待15分钟左右,但我们开始了。再次非常感谢,这真的很有帮助!