Ios UITextField是否应该每隔一次调用一次?
不幸的是,iOS没有像html那样的标签下拉选择器。我决定我最终要为我的应用程序创建一个,它看起来和工作都很棒。我的下拉对象是UITextField的一个子类。然而,我改变了一些东西,现在它只在某些时候起作用 用户交互已启用,但我不希望文本字段可编辑。我的下拉子类所在的类是UITextField delegate,应该接收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是否
-(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];