0

如何在 iOS 中自定义我的搜索栏键盘?例如,在键盘上添加带有个性化按钮的工具栏(我需要数学符号 ->、∞、∑)。感谢您的任何建议!垫

4

1 回答 1

1

我认为U只能更改“返回”键。据我所知,苹果不允许进行更多更改……所以这是我的教程:

事实上,所有其他键盘类型(除了非常相似的)确实提供了通过设置相应实现UIKeyboardTypePhonePad者的 returnKeyType 属性来消除的可能性。UITextInputTraits那么如何用数字键盘达到同样的效果呢?我们找到了解决方法!

查看数字键盘时,您会注意到其左下角有一个未使用的空间。这就是我们要插入自定义“返回”键的地方。你可以在这里看到:

第一的

简而言之:截屏,剪下整个退格键,水平翻转,在 Photoshop 中清除退格符号,并在“返回”键上覆盖我们想要的文本。我们选择将其标记为“完成”。现在我们有了自定义按钮的图像UIControlStateNormal。重复整个过程(在截屏时触摸退格键)以获得我们按钮的第二张图像UIControlStateHighlighted。结果如下:

第二

第三

现在回到编码。首先,我们需要知道数字键盘何时会在屏幕上向上滑动,以便在此之前插入自定义按钮。幸运的是,有一个专门用于此目的的通知,注册它就像这样简单:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(keyboardWillShow:) 
                                             name:UIKeyboardWillShowNotification 
                                           object:nil];

完成整个操作后,不要忘记将观察者从通知中心的适当位置删除:

[[NSNotificationCenter defaultCenter] removeObserver:self];

现在我们要进入它的核心。在该方法中,我们所要做的keyboardWillShow就是找到键盘视图并将我们的按钮添加到其中。UIWindow正如其他人已经发现的那样,键盘视图是我们应用程序的第二部分(参见这个线程)。所以我们引用那个窗口(在大多数情况下它将是第二个窗口,所以objectAtIndex:1在下面的代码中很好),遍历它的视图层次结构,直到我们找到键盘并将按钮添加到它的左下角:

- (void)keyboardWillShow:(NSNotification *)note {  
    // create custom button
    UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
    doneButton.frame = CGRectMake(0, 163, 106, 53);
    doneButton.adjustsImageWhenHighlighted = NO;
    [doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
    [doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
    [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];

    // locate keyboard view
    UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
    UIView* keyboard;
    for(int i=0; i<[tempWindow.subviews count]; i++) {
        keyboard = [tempWindow.subviews objectAtIndex:i];
        // keyboard view found; add the custom button to it
        if([[keyboard description] hasPrefix:@"UIKeyboard"] == YES)
            [keyboard addSubview:doneButton];
    }
}

,就是这样!我们按钮的空白区域从坐标(0, 163)开始,尺寸为(106, 53)。当然现在必须编写 doneButton 方法,但这已经不难了。只需确保调用resignFirstResponder正在编辑的文本字段以使键盘向下滑动。

最后一个

在这里你可以找到最终的项目......puhhh这是很多工作......希望它有所帮助......

这里是项目的链接:

项目

于 2012-10-03T12:19:00.667 回答