我有一个简单的应用程序,最近已经改变了它的前提。过去,用户会点击文本字段,然后向上会出现键盘上方的自定义工具栏,允许用户从自定义按钮中进行选择以添加到文本字段中的文本。因此,如果用户输入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的婚礼,或者用户键入的任何内容。
任何帮助都会有很长的路要走!
答案 0 :(得分:2)
也许我误会了,但你不能这样做:
NSString *text = self.eventAddSearchBar.text;
self.eventAddSearchBar.text = [text stringByAppendingFormat:@" %@", sender.title];