3 回答
TA贡献1860条经验 获得超9个赞
从iOS 3.2开始,有一种新方法可以实现此效果:
UITextFields
并UITextViews
具有一个inputAccessoryView
属性,您可以将其设置为任何视图,该属性会自动显示在上方并使用键盘进行动画处理。
请注意,您使用的视图既不应位于其他视图层次中,也不应将其添加到某些超级视图中,这是为您完成的。
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];
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];
}
希望能对某人有所帮助。
- 3 回答
- 0 关注
- 652 浏览
添加回答
举报