自定义键盘文本完全替换UISearchBar中的文本而不是添加到它[iOS]

时间:2014-03-06 07:01:21

标签: ios keyboard uibutton uisearchbar uitoolbar

我有一个简单的应用程序,最近已经改变了它的前提。过去,用户会点击文本字段,然后向上会出现键盘上方的自定义工具栏,允许用户从自定义按钮中进行选择以添加到文本字段中的文本。因此,如果用户输入John并按下婚礼按钮,则文本字段会将Wedding添加到结尾,因此现在可以说是John的婚礼。

我最近更改了UI以在用户选择文本字段时合并新的表视图控制器,因为我发生了一些自动完成,使用户更容易。我已将键盘向前移动但现在,而不是添加到搜索栏中的文本的自定义按钮,它只是替换它。

因此,如果您在搜索栏中输入John并在自定义键盘中按婚礼,搜索栏的文本将完全从John替换为婚礼。这不是理想的,我需要解决这个问题。

以下是一些代码:

-(void)configureKeyboardToolbars
{
    UIToolbar *eventToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0f, 0.0f,
                                                                          self.view.window.frame.size.width, 44.0f)];
    eventToolBar.tintColor = [UIColor colorWithRed:0.6f green:0.6f blue:0.64f alpha:1.0f];
    eventToolBar.translucent = NO;
    eventToolBar.items =   @[ [[UIBarButtonItem alloc] initWithTitle:@"Wedding"
                                                               style:UIBarButtonItemStyleBordered
                                                              target:self
                                                              action:@selector(barButtonAddText:)],

    // With the text field, the line below used to be:     self.eventTextField.inputAccessoryView = eventToolBar;

    self.eventAddSearchBar.inputAccessoryView = eventToolBar;

这会调用以下方法:

// A method that responds to the tool bar buttons being pressed
-(IBAction)barButtonAddText:(UIBarButtonItem*)sender
{
    if (self.eventAddSearchBar.isFirstResponder)
    {
        self.eventAddSearchBar.text = sender.title;
    }
}

以前是:

// A method that responds to the tool bar buttons being pressed
-(IBAction)barButtonAddText:(UIBarButtonItem*)sender
{
    if (self.eventTextField.isFirstResponder)
    {
        [self.eventTextField insertText:sender.title];
    }
}

所以searchBar没有insertText方法,我可以理解它只是替换它上面的文本;但是我不确定如何将自定义工具栏单词添加到搜索栏中文本的END(或开头),具体取决于用户输入的内容。

如果用户在键入之前按下按钮,那么它将是Wedding John,如果用户按下它(更有可能),它应该是John的婚礼,或者用户键入的任何内容。

任何帮助都会有很长的路要走!

1 个答案:

答案 0 :(得分:2)

也许我误会了,但你不能这样做:

NSString *text = self.eventAddSearchBar.text;
self.eventAddSearchBar.text = [text stringByAppendingFormat:@" %@", sender.title];