Ios UITextField是否应该每隔一次调用一次?

Ios UITextField是否应该每隔一次调用一次?,ios,objective-c,cocoa-touch,uitextfield,uipopovercontroller,Ios,Objective C,Cocoa Touch,Uitextfield,Uipopovercontroller,不幸的是,iOS没有像html那样的标签下拉选择器。我决定我最终要为我的应用程序创建一个,它看起来和工作都很棒。我的下拉对象是UITextField的一个子类。然而,我改变了一些东西,现在它只在某些时候起作用 用户交互已启用,但我不希望文本字段可编辑。我的下拉子类所在的类是UITextField delegate,应该接收UITextField的委托方法 我有-(BOOL)textField应该开始编辑:(UITextField*)textField{,在这里我检查所讨论的textField是否

不幸的是,iOS没有像html那样的标签下拉选择器。我决定我最终要为我的应用程序创建一个,它看起来和工作都很棒。我的下拉对象是UITextField的一个子类。然而,我改变了一些东西,现在它只在某些时候起作用

用户交互已启用,但我不希望文本字段可编辑。我的下拉子类所在的类是UITextField delegate,应该接收UITextField的委托方法

我有
-(BOOL)textField应该开始编辑:(UITextField*)textField{
,在这里我检查所讨论的textField是否是一个下拉菜单,如果是,我调用一个方法实例化一个popover并禁用编辑,但下拉菜单只会每隔点击一次出现

例如,我将点击“文本字段”并显示我的弹出框。我点击弹出框使弹出框消失,然后我点击“文本字段”但什么也没有发生。我再次点击文本字段,弹出框出现。不知道为什么会发生这种情况,我正在做的是:

h


每次点击都会被记录下来,所以我认为我的popover方法就是这个问题的罪魁祸首。有什么想法吗?

让我们通过区分UI元素的存在和popover的可见状态来重写:

// canonical lazy getters for UI elements

- (iPadMeasurementSelect *)measurementPicker {
    if (!_measurementPicker) {
        _measurementPicker = [[iPadMeasurementSelect alloc] initWithStyle:UITableViewStylePlain];
        _measurementPicker.delegate = self;
    }
    return _measurementPicker;
}

- (UIPopoverController *)measurementPopover {
    if (!_measurementPopover) {
        _measurementPopover = [[UIPopoverController alloc] initWithContentViewController:self.measurementPicker];
    }
    return _measurementPopover;
}

// now the show/hide method makes sense.  it can take a bool about whether to show or hide
-(void)showPopover:(BOOL)show {

    if (show) {
        [self.measurementPopover presentPopoverFromRect:self.measurementSelect.frame inView:self.conversionView permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
    } else {
        [self.measurementPopover dismissPopoverAnimated:NO];
        // if you want/need to create a new one each time it is shown, nil the popover here, like this:
        // self.measurementPopover = nil;
    }
}
当文本字段开始编辑时,按如下方式显示弹出框:

[self showPopover:YES];
当代理收到didEndEditing消息时:

[self showPopover:NO];

很有魅力!很有洞察力!
[self showPopover:YES];
[self showPopover:NO];