我正在使用UITableview搜索栏。为了搜索文本,我使用textField并在tableView的contentInset中添加设置。为清除文本,我使用rightView按钮。 在这里我得到一个奇怪的问题,在编辑文本时,我无法显示rightView按钮。
txtSearch.rightView = [self overlayButtonRight];
txtSearch.rightViewMode = UITextFieldViewModeWhileEditing;
- (UIButton *)overlayButtonRight {
if (!overlayButtonRight) {
overlayButtonRight = [UIButton buttonWithType:UIButtonTypeCustom] ;
overlayButtonRight.frame = CGRectMake(0, 0 , 25, 14);
UIImage *overlayImage = [UIImage imageNamed:@"checkMark_right_green.png"];
if (overlayImage) {
[overlayButtonRight setImage:overlayImage forState:UIControlStateNormal];
}
}
return overlayButtonRight;
}
这里我已经描述了我如何应用这个按钮。使用此UITextFieldViewModeWhileEditing
对我不起作用。
还有一件事在ios 5中正常工作,但在ios6中没有工作。
如果您有解决方案,请告诉我。
提前致谢!!!
答案 0 :(得分:1)
这似乎是一个iOS错误..
这就是我所做的..
在文本字段子类
中 -(id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder]) {
[self addTarget:self action:@selector(didEditting:) forControlEvents: UIControlEventEditingChanged];
}
-(void) didStartTyping:(id)sender {
if(self.text){
self.rightViewMode = UITextFieldViewModeAlways;
}else{
self.rightViewMode = UITextFieldViewModeNever;
}
}
- (BOOL)becomeFirstResponder{
BOOL ret = YES ;
ret = [super becomeFirstResponder] ;
if( ret & self.text.length]){
self.rightViewMode = UITextFieldViewModeAlways;
}else{
self.rightViewMode = UITextFieldViewModeNever;
}
return ret ;
}
- (BOOL)resignFirstResponder
{
BOOL ret = YES ;
ret = [super resignFirstResponder] ;
if( ret )
self.rightViewMode = UITextFieldViewModeNever;
return ret ;
}
我觉得当我遇到同样的问题时,我找到了类似的解决方案。找不到了。