gpt4 book ai didi

ios - UISegmentedControl 按钮停止工作

转载 作者:行者123 更新时间:2023-11-29 04:06:26 25 4
gpt4 key购买 nike

我的 iOS 应用程序有一个包含大约十几个字段的表单,我想在键盘上方添加“上一个”/“下一个”按钮以帮助用户在字段之间移动。我有这样的东西:

for (UITextField *t in _textfields) {
t.delegate = self;

UIToolbar *toolbar = [[UIToolbar alloc] init];
[toolbar setBarStyle:UIBarStyleBlackTranslucent];

UISegmentedControl *segControl = [[UISegmentedControl alloc] initWithItems:@[@"Previous", @"Next"]];
[segControl addTarget:self action:@selector(switchTextField:) forControlEvents:UIControlEventValueChanged];
segControl.segmentedControlStyle = UISegmentedControlStyleBar;
segControl.tag = [_textfields indexOfObject:t];
if (segControl.tag == 0) [segControl setEnabled:NO forSegmentAtIndex:0];
else if (segControl.tag == [_textfields count] - 1) [segControl setEnabled:NO forSegmentAtIndex:1];

[segControl sizeToFit];

UIBarButtonItem *segItem = [[UIBarButtonItem alloc] initWithCustomView:segControl];

UIBarButtonItem *flexButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self.view action:@selector(endEditing:)];
[toolbar setItems:@[segItem, flexButton, doneButton]];
[toolbar sizeToFit];
[t setInputAccessoryView:toolbar];
}

我遇到的问题是,每隔一段时间,其中一个部分就会停止工作。方法 switchTextField 只是没有被调用,按钮看起来正常,没有禁用,但触摸没有注册。有时是“上一个”按钮,有时是“下一个”按钮,两者不会同时出现,有时它们都工作得很好。一旦其中一个按钮被卡住,(暂时)修复它的唯一方法是在不使用工具栏的情况下点击另一个文本字段,或者关闭键盘并重新开始编辑。可能是什么问题?

最佳答案

当您确实希望上一个/下一个控件具有 UIButton 的行为时,分段控件不是一个好的选择。

我认为正在发生的情况是,您正在使用分段控件初始化工具栏,但未选择任何分段。因此,当您第一次点击上一个/下一个时,值会发生变化,并且会为特定的分段控件选择该段。当您继续点击上一个/下一个时,最终您会到达一个分段控件,该控件已经选择了一个段,并且该段在点击时不会触发值更改事件,因为它已经是选定的段。

您可以在 switchTextField: 方法中显式取消选择所选段(确保不会递归触发 switchTextField:),或者您可以更改实现以使用 UIButton 对象用于上一个/下一个而不是分段控件。

我建议使用UIButton

关于ios - UISegmentedControl 按钮停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15119499/

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