iOS应用程序中的自定义数字键盘问题
Posted
技术标签:
【中文标题】iOS应用程序中的自定义数字键盘问题【英文标题】:Issue with custom number pad in iOS app 【发布时间】:2013-11-29 20:17:26 【问题描述】:我有一个带有自定义数字键盘的应用。我需要一些自定义数字键盘,但不是首选项视图上的所有文本字段。我已经编写了这个方法来为某些文本字段设置数字键盘:
-(void)setNumberPadFor:(UITextField*)textField andNibName:(NSString *)nibNamed
textField.inputView = [[[NSBundle mainBundle] loadNibNamed:nibNamed
owner:self
options:nil] lastObject];
UIBarButtonItem *btnDone = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:textField
action:@selector(resignFirstResponder)];
UIToolbar *tips = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
tips.barStyle = UIBarStyleBlackOpaque;
[tips setBackgroundColor:[UIColor blueColor]];
[tips setTintColor:[UIColor whiteColor]];
UIBarButtonItem *spacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil
action:nil];
[tips sizeToFit];
tips.items = [NSArray arrayWithObjects:spacer, btnDone, nil];
textField.inputAccessoryView = tips;
我正在调用 setup 方法如下(在 ViewController 的 viewDidLoad 中):
[self setNumberPadFor:txtMinFeet andNibName:@"PosNegNumberPad"];
[self setNumberPadFor:txtMaxFeet andNibName:@"PosNegNumberPad"];
那么,在我的按钮点击事件中,如何访问启动数字键盘的文本字段?
-(IBAction)btnNum1:(id)sender
[[UIDevice currentDevice] playInputClick];
// update text field
-(IBAction)btnNum2:(id)sender
[[UIDevice currentDevice] playInputClick];
// update text field
最终我将有两个自定义数字键盘来满足要求,但目前只有一个(因此当前将一个笔尖作为参数传递)。
我的按钮操作已设置并可以正常工作,也就是说,我可以在其中设置断点并验证应用是否响应事件。
我不清楚的是如何识别哪个文本字段启动了数字键盘,以便我可以相应地更新它。
显然我遗漏了一些东西。有什么建议么?谢谢!
【问题讨论】:
【参考方案1】:一种方法是使用 ivar,并且每次获得委托方法 textFieldDidBeginEditing: 时设置 ivar。稍后,您查询 ivar 以获取当前文本字段。
另一种方法是找到第一响应者。这意味着遍历主视图的子视图以找到它。这很常见,您可以在这里找到执行此操作的代码。另一种方法是最容易做到的。
【讨论】:
以上是关于iOS应用程序中的自定义数字键盘问题的主要内容,如果未能解决你的问题,请参考以下文章