ios添加自定义inputView

前端之家收集整理的这篇文章主要介绍了ios添加自定义inputView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
无论我读了多少,我都坚持使用iOS中的一个概念,我似乎无法理解.我试图用自定义设计覆盖标准iOS数字键盘.当用户触摸UITextField时,我希望显示自定义inputView而不是标准数字键盘.

我为我的自定义inputView创建了一个单独的.h / .m / .xib ViewController类,名为“customInputViewController”现在,它只是一个黑暗的背景和一个按钮,当触摸UITextField时,它会遮挡大约一半的屏幕(类似于数字垫,但它看起来不同).当我单击自定义inputView中的一个按钮时,我的实现失败 – iOS会抛出EXC_BAD_ACCESS错误.

这是我在运行时加载.xib文件并将自定义inputView附加到UITextField对象的方法

UIViewController *v = [[customInputViewController alloc] initWithNibName:@"customInputDesign" bundle:nil];
myTextInput.inputView = v.view;

自定义inputView的.xib文件中,我将File的Owner设置为“customInputViewController”,然后创建了一个(IBAction)方法并将其附加到UIButton.单击该按钮时,(IBAction)设置为发送NSLog(@“按钮单击”)消息.没什么特别的.它只是一个简单的样板实现,继续引发错误.

也许我这样做完全错了.有谁可以提供一个简单的例子?

解决方法

视图v.view被保留,因为inputView属性被定义为(readwrite,retain).但是,如果在单击输入按钮之前在某处释放customInputViewController v,则会出现崩溃(EXC_BAD_ACCESS)

您可以在主控制器中尝试:

- (IBAction) keyboardButtonClicked
{
    NSLog(@"keyboard Button Clicked");
}

- (void) viewDidLoad
{
    // do your stuff here ...

    UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0,320,100)]; // add autorelease if you don't use ARC
    v.backgroundColor = [UIColor darkGrayColor];
    UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
    [b setTitle:@"Test button" forState:UIControlStateNormal];
    [b addTarget:self action:@selector(keyboardButtonClicked) forControlEvents:UIControlEventTouchUpInside];
    b.frame = CGRectMake(80,25,160,50);
    [v addSubview:b];
    myTextInput.inputView = v;
}

应该工作正常……

猜你在找的iOS相关文章