UITextView

来源:互联网 发布:淘宝店铺的网址怎么看 编辑:程序博客网 时间:2024/05/21 20:30

UITextView继承自UIScrollView

有时候我们有一个界面是带有导航栏的,然后我们家上了这个UITextView子视图,并让其占据整个屏幕,但是会发现一点击输入时,光标正好显示在导航栏的下面,怎么会这样呢,这个时候他的值不应该是0吗,应该被导航栏挡住了啊。其实是因为她的父类特有的功能,那个EdgeInset,它的内容的EdgeInset被悄悄改变了(由于有导航栏并且automaticallyAdjustsScrollViewInsets(这个是UIViewController的属性)默认是YES),不信你打印一下,如果你打印完了,发现并不是啊,都是0啊。那就你忽略了一件事,是只有在他真正显示出来的时候才会改变EdgeInset。也就是你需要在viewDidAppear方法中打印,而不是你刚创建完就打印。

但是有的时候,我们的视图并没有被导航栏挡住的时候,就需要设置automaticallyAdjustsScrollViewInsets为NO了,因为它没有那么智能。

为了让键盘自动出现
[textView becomeFirstResponder];

键盘消失

[textView resignFirstResponder];

UITextView是没有占位属性的,所以如果你有这方面需求,你应该自定义一个继承自UITextView的类为他添加这个功能。

[self setNeedsDisplay]; // 注意这个方法会在下一次循环的时候调用~~~这个好好理解一下
// 比如,你先设置placeholder,又设置textView的font属性,本来我们没有监听font,但是结果确实按照设置改变了font属性,这是为什么呢,就是因为setNeedsDisplay会在下一次循环的时候调用,你设置完placeholder 那么会进入placeholder的set方法,然后在下一次循环内部会进行setNeedsDisplay方法调用(要注意是在设置完font的时候才进行下一次循环,这是系统为了性能着想,因为他认为你可能一次需要重画很多东西,先让你设置完,下一次一起重画)

如果你想让textView一直可以滚动

textView.alwaysBounceVertical = YES;

这个是scrollview的属性

0 0