为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式将iPhone键盘顶部的工具栏对齐

以编程方式将iPhone键盘顶部的工具栏对齐

一只斗牛犬 2019-10-04 16:07:28
在某些情况下,我想在iPhone键盘的顶部添加一个工具栏(例如,在导航表单元素时,例如在iPhone Safari中)。目前,我正在使用常量指定工具栏的矩形,但是由于界面的其他元素在变动中-屏幕顶部的工具栏和导航栏-每次我们进行较小的界面更改时,工具栏都会偏离对齐状态。有没有办法以编程方式确定键盘相对于当前视图的位置?
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

从iOS 3.2开始,有一种新方法可以实现此效果:

UITextFieldsUITextViews具有一个inputAccessoryView属性,您可以将其设置为任何视图,该属性会自动显示在上方并使用键盘进行动画处理。

请注意,您使用的视图既不应位于其他视图层次中,也不应将其添加到某些超级视图中,这是为您完成的。


查看完整回答
反对 回复 2019-10-04
?
皈依舞

TA贡献1851条经验 获得超3个赞

所以基本上:


在init方法中:


NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

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

[nc addObserver:self selector:@selector(keyboardWillHide:) name: UIKeyboardWillHideNotification object:nil];

然后使用上面提到的方法来调整条的位置:


-(void) keyboardWillShow:(NSNotification *) note

{

    CGRect r  = bar.frame, t;

    [[note.userInfo valueForKey:UIKeyboardBoundsUserInfoKey] getValue: &t];

    r.origin.y -=  t.size.height;

    bar.frame = r;

}

通过将位置变化动画化,可以使其变得漂亮


    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationDuration:0.3];

//...

    [UIView commitAnimations];


查看完整回答
反对 回复 2019-10-04
?
HUH函数

TA贡献1836条经验 获得超4个赞

这基于tonklon的现有答案 -我只是添加一个代码段,该代码段在键盘顶部显示一个半透明的黑色工具栏,并在右侧显示一个“完成”按钮:


UIToolbar *toolbar = [[[UIToolbar alloc] init] autorelease];

[toolbar setBarStyle:UIBarStyleBlackTranslucent];

[toolbar sizeToFit];


UIBarButtonItem *flexButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(resignKeyboard)];


NSArray *itemsArray = [NSArray arrayWithObjects:flexButton, doneButton, nil];


[flexButton release];

[doneButton release];

[toolbar setItems:itemsArray];


[aTextField setInputAccessoryView:toolbar];

和-resignKeyboard看起来像:


-(void)resignKeyboard {

  [aTextField resignFirstResponder];

}

希望能对某人有所帮助。


查看完整回答
反对 回复 2019-10-04
  • 3 回答
  • 0 关注
  • 652 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信