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],便可實現鍵盤的自由切換。
使用場景:
鍵盤監聽代碼以下:(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];
}