iOS中UITextView的幾個小問題

一、ios7中,UITextView有個小bug:html

     當輸入內容到textView底部,這個時候點擊鍵盤上面換行,textView不會隨着光標移動下去,在網上查了一下,找到解決方案:(參考:http://stackoverflow.com/questions/18966675/uitextview-in-ios7-clips-the-last-line-of-text-string/19277383#19277383)ios

- (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系統。app


2、ios7和ios8上面,輸入textview底部時候,收起鍵盤,文字會滑動到一個隨機的位置,(還會有其餘動做引發),若是想把光標保留在底部不動,能夠作以下設置(參考:http://www.isaced.com/post-266.html) 佈局

inputTextView.layoutManager.allowsNonContiguousLayout = NO;

這個屬性的含義,我沒具體查太多,文章說這麼說的:post

    "這句代碼設置了 UITextView 中的 layoutManager(NSLayoutManager) 的是否非連續佈局屬性,默認是 YES,設置爲 NO 後 UITextView 就不會再本身重置滑動了。"ui

本身去寫的時候,發現蘋果代碼註釋中寫的allowsNonContiguousLayout的默認值是NO,本身打斷點看了一下,發現是註釋寫錯了,第一次碰見蘋果註釋寫錯的狀況- -spa


3、在ios7中,UITextView的setText:方法不會觸發 UITextViewTextDidChangeNotification的通知(這是以前的筆記,如今不知道什麼狀況)code

相關文章
相關標籤/搜索