gpt4 book ai didi

iphone - 具有自定义 rightView 的 UITextField 中的宽度问题

转载 作者:行者123 更新时间:2023-12-03 18:57:30 26 4
gpt4 key购买 nike

我有一个 UITextField (放置在 UITableViewCell 内),它有一个 UIButton 作为自定义 rightView:

    UITextField *textField = [[[UITextField alloc] initWithFrame:CGRectMake(10.0, 1.0, cell.bounds.size.width - 20.0, 31.0)] autorelease];
textField.autoresizingMask = UIViewAutoresizingFlexibleWidth;
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake(0.0, 0.0, 27.0, 31.0); // Probably not needed, doesn't change anything
button.frame = CGRectMake(0.0, 0.0, 27.0, 31.0);
[button setImage:[UIImage imageNamed:@"27x31.png"] forState:UIControlStateNormal];
textField.rightView = button;
textField.rightViewMode = UITextFieldViewModeUnlessEditing;

当显示文本字段时,触摸不会按预期处理:

  • 如果我触摸按钮,它就会被触发。
  • 如果我触摸靠近按钮左边缘(但超出其边界)的区域,该按钮仍会被触发。
  • 如果我想编辑文本字段中的文本而不是触发按钮,我必须进一步向左触摸。

如果我将设备旋转到横向模式,情况会变得更糟。在这种情况下,仍然触发按钮的按钮左侧的区域更宽,并且该区域左侧有一个不执行任何操作的间隙 - 按钮不会被触发,文本也不会被编辑。在这种情况下,我必须向左移动相当远的距离才能编辑文本。

只有当字段中的当前文本很短时才会发生这种情况。如果文本填充文本字段,则触摸将按预期进行处理(触摸按钮左侧的任何位置都可以纵向和横向编辑文本)。

我尝试覆盖 textRectForBoundseditingRectForBoundsrightViewRectForBounds。我验证了它们被调用并返回正确的值,但它们不会改变任何东西(只要返回值是正确的)。

有什么想法吗?

最佳答案

我对 rightView 也有类似的问题,它似乎阻止了文本字段的一部分接受输入。我的 rightView 不是按钮,因此我只需将其 userInteractionEnabled 设置为 NO,文本字段就开始在整个区域再次接收触摸。

由于您有一个按钮作为右 View ,这可能没有多大帮助。但我们的示例之间的另一个相似之处是两个 rightView 的宽度都很小。也许 rightView 不喜欢宽度 < x。

关于iphone - 具有自定义 rightView 的 UITextField 中的宽度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100725/

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