iOS 7 之后UITextView 最后一行显示bug

- (void) textViewDidChange:(UITextView *)textView
    {
    if (textView.text.length > 5000) { // 限制5000字内
        textView.text = [textView.text substringToIndex:5000];
    }

iOS7之后出现,通过改变scrolloview的setContentOffset处理位置

    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 += 5; // leave 5 pixels margin
        // Cannot animate with setContentOffset:animated: or caret will not appear
        [UIView animateWithDuration:.2 animations:^{
            [_textView setContentOffset:offset];
        }];
    }
   
    [self setTextViewSizeToFit:NO];
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我叫刘半仙

【JDK并发包基础】工具类详解

       在写并发代码来提升性能时,会遵循某些最佳写法,而不是只用基础的wait和notify来控制复杂的流程。Java.util.concurrent 包...

2825
来自专栏Java3y

Thread源码剖析

1805
来自专栏wannshan(javaer,RPC)

JDK7 ThreadPoolExecutor execute(Runnable command) 方法解析

/** * 通过这个方法提交的线程,将在新的线程,或者已有的(线程池)线程中执行 * * * If the task ...

3926
来自专栏linux、Python学习

十分钟带你了解 Python3 多线程核心知识

每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

840
来自专栏后端之路

你以为的线程就是你以为的线程么

背景 无论从哪里来看现在web的开发中线程都被各种框架封装的很完善了, 无论选用rpc或者http请求中现在的线程(或者说线程池)都是框架在管理。 那么这是否说...

34010
来自专栏java 成神之路

ReentrantLock 源码解析(JDK1.8)

3368
来自专栏编程坑太多

Callable接口实现多线程,生产者消费者问题,多线下载(复制)文件

1544
来自专栏高性能服务器开发

【java多线程】多线程并发同步问题及解决方法

一、线程并发同步概念 线程同步其核心就在于一个“同”。所谓“同”就是协同、协助、配合,“同步”就是协同步调昨,也就是按照预定的先后顺序进行运行,即“你先,我等,...

4588
来自专栏黑泽君的专栏

Java演示死锁代码

601
来自专栏码匠的流水账

kafka0.10client使用实例

771

扫码关注云+社区