iOS中UITextView的几个小问题

1、ios7中,UITextView有个小bug:

     当输入内容到textView底部,这个时候点击键盘上面换行,textView不会随着光标移动下去,在网上查了一下,找到解决方案:(参考:http://stackoverflow.com/questions/18966675/uitextview-in-ios7-clips-the-last-line-of-text-string/19277383#19277383)

- (void)textViewDidChange:(UITextView *)textView
{
    if (isIOS7)
    {
        CGRect line = [textView caretRectForPosition:
                       textView.selectedTextRange.start];
        CGFloat overflow = line.origin.y + line.size.height
        - ( textView.contentOffset.y + textView.bounds.size.height
           - textView.contentInset.bottom - textView.contentInset.top);
        if ( overflow > 0 ) {
            // We are at the bottom of the visible text and introduced a line feed, scroll down (iOS 7 does not do it)
            // Scroll caret to visible area
            CGPoint offset = textView.contentOffset;
            offset.y += overflow + 7; // leave 7 pixels margin
            // Cannot animate with setContentOffset:animated: or caret will not appear
            [UIView animateWithDuration:.2 animations:^{
                [textView setContentOffset:offset];
            }];
        }
    }
}

其中isIOS7为判断是否是ios7系统。


二、ios7和ios8上面,输入textview底部时候,收起键盘,文字会滑动到一个随机的位置,(还会有其他动作引起),如果想把光标保留在底部不动,可以做如下设置(参考:http://www.isaced.com/post-266.html)

inputTextView.layoutManager.allowsNonContiguousLayout = NO;

这个属性的含义,我没具体查太多,文章说这么说的:

    "这句代码设置了 UITextView 中的 layoutManager(NSLayoutManager) 的是否非连续布局属性,默认是 YES,设置为 NO 后 UITextView 就不会再自己重置滑动了。"

自己去写的时候,发现苹果代码注释中写的allowsNonContiguousLayout的默认值是NO,自己打断点看了一下,发现是注释写错了,第一次遇见苹果注释写错的情况- -


三、在ios7中,UITextView的setText:方法不会触发 UITextViewTextDidChangeNotification的通知(这是之前的笔记,现在不知道什么情况)

转载于:https://my.oschina.net/u/1473377/blog/371148

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值