用 UITextField 自定义UISearchBar 监听输入字符串改变的问题
2015-01-09 10:00
796 查看
用 UITextField 自定义的 UISearchBar 没有如下的 UISearchBar 中的协议方法
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
UITextField 中只有协议方法:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
该方法只能监听将要改变之前的状态,不能监听当前 textfield 的字符串,监听的字符串总是慢一步。如果将要输入中文,则监听到的是中文拼音,并且拼音中间以空格隔开,
textField.text.length长度为英文字母加空格个数。
解决办法:
UITextFieldTextDidChangeNotification
更正:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
UITextField 中只有协议方法:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
该方法只能监听将要改变之前的状态,不能监听当前 textfield 的字符串,监听的字符串总是慢一步。如果将要输入中文,则监听到的是中文拼音,并且拼音中间以空格隔开,
textField.text.length长度为英文字母加空格个数。
解决办法:
UITextFieldTextDidChangeNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged) name:UITextFieldTextDidChangeNotification object:_searchTF];
-(void)textChanged { BOOL isEqual = [_searchTF.text isEqualToString:_oldStr]; if ( isEqual || ((!isEqual) && (_oldStr.length > _searchTF.text.length))) { NSLog(@"===////%@====////=====",_searchTF.text); } _oldStr = _searchTF.text; }
//或者 -(void)textChanged { if ([_searchTF.text isEqualToString:_oldStr]) { NSLog(@"===////%@====////=====",_searchTF.text); } if ((![_searchTF.text isEqualToString:_oldStr])&&(_oldStr.length > _searchTF.text.length)) { NSLog(@"===////%@====////=====",_searchTF.text); } _oldStr = _searchTF.text; }
更正:
-(void)textChanged { if ([_searchTF.text isEqualToString:_changeStr]) { // [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; // [_doctorsArray removeAllObjects]; // [self loadDoctorWithKeyword:_searchTF.text AndIsSearchType:YES AndPage:1]; _oldStr = _searchTF.text; NSLog(@"===////%@====////=====",_searchTF.text); }else if ((![_searchTF.text isEqualToString:_oldStr])&&(_oldStr.length > _searchTF.text.length)) { // [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; // [_doctorsArray removeAllObjects]; // [self loadDoctorWithKeyword:_searchTF.text AndIsSearchType:YES AndPage:1]; _oldStr = _searchTF.text; NSLog(@"===////%@====////=====",_searchTF.text); } _changeStr = _searchTF.text; }
-(void)textChanged { BOOL isEqual = [_searchTF.text isEqualToString:_changeStr]; if ( isEqual || ((!isEqual) && (_oldStr.length > _searchTF.text.length))) { _oldStr = _searchTF.text; NSLog(@"===////%@====////=====",_searchTF.text); [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; [_doctorsArray removeAllObjects]; [self loadDoctorWithKeyword:_searchTF.text AndIsSearchType:YES AndPage:1]; } _changeStr = _searchTF.text; }
相关文章推荐
- 在ios7及以上系统中在UINavigationBar中添加UITextField或者UISearchbar时不显示输入光杆问题及解决
- 自定义UISearchBar注意的问题
- iOS小问题---怎么改变uisearchbar中的cancel按钮的文字?
- 摸非输入区(背景)使UITextField(UISearchBar)键盘消失的方法
- 通过UITextField自定义UIsearchBar
- 改变UISearchBar的细节问题
- 使用UITextField自定义UISearchBar
- 触摸非输入区(背景)使UITextField(UISearchBar)键盘消失的方法
- 【Q&A】istringstream 重新设定输入字符串问题
- UISearchBar背景透明,去掉背景,自定义背景(转)
- Struts2对页面上的My97DatePicker日期控件输入的日期字符串,不能进行自动转型问题
- UISearchBar背景透明,去掉背景,自定义背景(转)
- android TextWatcher 监听textview和edittext的文字输入改变
- 关于输入字符串格式不正确的问题
- IOS开发之UISearchBar自定义外观
- IOS开发问题解决之限制UITextField输入特定位数小数时,Done按钮失效
- 关于JTextField在输入监听时改变自身text而发生的JTextField java.lang.IllegalStateException
- Kuix TextField 输入文字改变长度问题
- ios5中改变navigationbar自定义图片问题 (转载)
- UISearchBar背景透明,去掉背景,自定义背景(转)