gpt4 book ai didi

objective-c - UITextField rightViewMode 奇怪的行为

转载 作者:技术小花猫 更新时间:2023-10-29 10:50:11 25 4
gpt4 key购买 nike

我将自定义清除按钮 (UIButton) 添加到 UITextField 作为 rightView,但是我发现 viewMode 上有一些奇怪的行为。尽管设置了查看模式,但它似乎不像普通的清除按钮那样显示。示例代码如下:

UITextField *f = [[[UITextField alloc] init] autorelease];
f.frame = CGRectMake(0, 0, 300, 44);
f.backgroundColor = [UIColor clearColor];
f.textColor = [UIColor whiteColor];

f.clearButtonMode = UITextFieldViewModeNever;

UIImage *image = [UIImage imageNamed:@"Image.png"];

UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
b.frame = CGRectMake(0, 0, image.size.width, image.size.height);
[b setImage:image forState:UIControlStateNormal];

f.rightView = b;
f.rightViewMode = UITextFieldViewModeWhileEditing;

按钮在以下状态下正确显示:

  • 集中显示且无文字
  • 在集中注意力和打字时显示
  • 没有焦点时隐藏

但是,如果文本字段已经有内容,并且您将焦点切换到它,则不会显示清除按钮。要让它再次显示,您必须删除所有文本,并来回切换焦点。

我还没有发现其他人有这个问题,所以我已经为这个问题摸不着头脑了一段时间。非常感谢任何光线脱落。

最佳答案

这修复了错误:

- (BOOL)becomeFirstResponder
{
BOOL ret = YES ;

ret = [super becomeFirstResponder] ;

if( ret && ( _setupClearButtonMode == UITextFieldViewModeWhileEditing ) )
self.rightViewMode = UITextFieldViewModeAlways ;

return ret ;
}

- (BOOL)resignFirstResponder
{
BOOL ret = YES ;

ret = [super resignFirstResponder] ;

if( ret && ( _setupClearButtonMode == UITextFieldViewModeWhileEditing ) )
self.rightViewMode = UITextFieldViewModeWhileEditing ;

return ret ;
}

在您的 UITextField 子类中在初始化时设置 var _setupClearButtonMode。

关于objective-c - UITextField rightViewMode 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7401263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com