UITextView / UITextField的異同點

 UITextField繼承UIControlhtml

     1.文字永遠是一行,不能顯示多行文字ios

     2.有placehoder屬性設置佔位文字app

     3.繼承自UIControlide

     4.監聽行爲佈局

     1> 設置代理動畫

     2> addTarget:action:forControlEvents:spa

     3> 通知:UITextFieldTextDidChangeNotification代理

 

 UITextView繼承UIScrollViewserver

     1.能顯示任意行文字htm

     2.不能設置佔位文字(能夠經過建立個UILabel子控件來加載在UITextView上實現)

     3.繼承自UIScollView

     4.監聽行爲

     1> 設置代理

     2> 通知:UITextViewTextDidChangeNotification

 

相同點:二者均可以監聽系統鍵盤的變化,能夠據此自定義鍵盤:注意:二者在點擊編輯內容時,系統 自動加載系統鍵盤,要想自定義鍵盤,必須先取消第一響應者[UITextView / UITextField resignFirstResponder],而後設置inputView;若是想實現自定義鍵盤和系統的鍵盤的自由切換,須要在設置inputView時,這樣設置:textView.inputView = textView.inputView == nil ? emoticonKeyboardView : nil,而後恢復第一響應者[UITextView / UITextField becomeFirstResponder],便可實現鍵盤的自由切換。

鍵盤事件

使用場景:

  • 計算鍵盤的高度,調整UI佈局
  • 根據鍵盤顯示隱藏執行UI的動畫


鍵盤監聽代碼以下:(self.toolBar是自定義的鍵盤,繼承至UIToolBar)

- (void)regiserNotification{

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];

}

 

- (void)keyboardWillChange:(NSNotification *)notification{

    NSLog(@"%@",notification);

    CGRect rect = [[[notification userInfo]objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

    NSLog(@"%f---",rect.origin.y);

    CGFloat offsetY = - kScreenHeight + rect.origin.y;

    NSLog(@"---offsetY %f",offsetY);

    [self.toolBar mas_updateConstraints:^(MASConstraintMaker *make) {

        make.bottom.mas_equalTo(offsetY);

    }];

    [self.view layoutIfNeeded];

}

 

- (void)dealloc{

    [[NSNotificationCenter defaultCenter] removeObserver:self];

}

相關文章
相關標籤/搜索