在 uitableview 底部创建一个文本字段并发送按钮,例如 Instagram 评论部分
Posted
技术标签:
【中文标题】在 uitableview 底部创建一个文本字段并发送按钮,例如 Instagram 评论部分【英文标题】:Create a textfield and send button at the bottom of uitableview like Instagram comment section 【发布时间】:2016-08-09 23:01:18 【问题描述】:我想在 uitableview 的底部添加一个文本字段和发送按钮。我在 tableview 中添加了一个页脚来实现这一点,但似乎页脚出现在最后一条评论的正下方,而不是 uitableview 的最底部。我还想在键盘出现时向上移动页脚,在键盘被关闭时向下移动。您可以在下面看到我的代码以供参考。谢谢!
Expected Result
Actual outcome
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
footer = UIView(frame: CGRectMake(0, 0, 320, 44))
footer!.backgroundColor = UIColor.lightGrayColor()
textField = UITextField(frame: CGRectMake(5, 5, 315, 35))
textField!.borderStyle = UITextBorderStyle.Bezel
yourSendButton = UIButton(frame: CGRectMake(318,5,62,35))
// [[UIButton alloc] initWithFrame:CGRectMake(225,5,75,35)];
yourSendButton!.backgroundColor = UIColor.lightGrayColor()
yourSendButton!.setTitle("Send", forState: .Normal)
yourSendButton!.setTitleColor(UIColor.darkGrayColor(), forState: .Normal)
yourSendButton!.addTarget(self, action: "sendBtnClicked:", forControlEvents: UIControlEvents.TouchUpInside)
//addTarget:self action:@selector(sendBtnClicked) forControlEvents:UIControlEventTouchUpInside];
footer!.addSubview(yourSendButton!)
footer!.addSubview(textField!)
self.navigationController?.view.addSubview(footer!)
return footer
override func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
return 44
func sendBtnClicked (sender: UIButton)
print("send button pressed")
print(textField?.text)
【问题讨论】:
【参考方案1】:我建议在自定义 UIViewController 中使用 tableView 这段代码可以帮助你:
var commentField:UITableViewCell!
override func viewDidLoad()
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector:"keyboardWillAppear:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector:"keyboardWillDisappear:", name: UIKeyboardWillHideNotification, object: nil)
override func viewWillDisappear(animated: Bool)
super.viewWillDisappear(true)
NSNotificationCenter.defaultCenter().removeObserver(self)
func keyboardWillAppear(notification: NSNotification)
var userInfo:NSDictionary = notification.userInfo!
var keyboardSize:CGSize = userInfo.objectForKey(UIKeyboardFrameBeginUserInfoKey)!.CGRectValue().size
var contentInsets:UIEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)
self.tableView.contentInset = contentInsets
self.tableView.scrollIndicatorInsets = contentInsets
var messageFrame:CGRect = self.commentField.frame
messageFrame.origin.y -= keyboardSize.height
self.commentField.frame = messageFrame
func keyboardWillDisappear(notification: NSNotification)
var userInfo:NSDictionary = notification.userInfo!
var keyboardSize:CGSize = userInfo.objectForKey(UIKeyboardFrameBeginUserInfoKey)!.CGRectValue().size
UIView.beginAnimations(nil, context: nil)
UIView.setAnimationDuration(0.25)
self.tableView.contentInset = UIEdgeInsetsZero
UIView.commitAnimations()
self.tableView.scrollIndicatorInsets = UIEdgeInsetsZero
var messageFrame:CGRect = self.commentField.frame
messageFrame.origin.y += keyboardSize.height
self.commentField.frame = messageFrame
【讨论】:
如果我没记错的话,你会在 viewcontroller 中添加一个 tableview。看起来表格视图单元格将是注释字段,但我将在哪里添加文本字段和发送按钮?谢谢。 您只需将 uitableview 添加到您的视图控制器,然后添加包含评论的单元格并在您的 uitableview 下放置一个文本字段和一个发送按钮,因为您可以使用情节提要修改您的 uitableview 高度和宽度,不要忘记实现 tableview 数据源,希望它有用 :) 如果我的回答有帮助,请不要犹豫验证我的回答 :) 谢谢以上是关于在 uitableview 底部创建一个文本字段并发送按钮,例如 Instagram 评论部分的主要内容,如果未能解决你的问题,请参考以下文章
带有输入字段的 UITableView - 如何在进入详细视图并返回时保留值