【发布时间】:2014-01-12 00:48:55
【问题描述】:
不幸的是,iOS 没有像 html 那样带有标签的下拉选择器。我决定我最终要为我的应用程序创建一个,它看起来和工作都很棒。我的下拉对象是 UITextField 的子类。然而,我改变了一些东西,现在它只在某些时候有效。
用户交互已启用,但我不希望文本字段可编辑。我的下拉子类所在的类是 UITextField 委托,并且应该接收 UITextField 的委托方法。
我有- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{,在那里我检查有问题的文本字段是否是下拉菜单,如果是,我调用一个方法来实例化弹出窗口并禁用编辑,但下拉菜单仅出现在其他每个点击上。
例如,我将点击“文本字段”并显示我的弹出框。我点击了弹出框,然后点击“文本字段”,没有任何反应。我再次点击文本字段并出现弹出框。不知道为什么会这样,这就是我正在做的事情:
.h
subclass : UIViewController<UITextFieldDelegate>
.m
dropdownTextField.delegate = self;
...
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if(textField == self.measurementSelect){
NSLog(@"IM CALLED");
[self showPopover:textField];
return NO;
}
return YES;
}
-(void)showPopover:(id)sender{
if (_measurementPicker == nil) {
_measurementPicker = [[iPadMeasurementSelect alloc] initWithStyle:UITableViewStylePlain];
_measurementPicker.delegate = self;
}
if (_measurementPopover == nil) {
_measurementPopover = [[UIPopoverController alloc] initWithContentViewController:_measurementPicker];
[_measurementPopover presentPopoverFromRect:self.measurementSelect.frame inView:self.conversionView permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
else {
[_measurementPopover dismissPopoverAnimated:YES];
_measurementPopover = nil;
}
}
每次点击都会被 nslogged,所以我认为我的 popover 方法是这个问题的罪魁祸首。有什么想法吗?
【问题讨论】:
标签: ios objective-c cocoa-touch uitextfield uipopovercontroller