在 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 评论部分的主要内容,如果未能解决你的问题,请参考以下文章

使用swift 2仅使用顶部和底部边框的文本字段

Swift:数组、文本字段和 UITableView

使用核心数据时在 UITableView 顶部添加新行

带有输入字段的 UITableView - 如何在进入详细视图并返回时保留值

在 UITableView 中快速滚动并选择单元格时,文本字段委托将 indexPath 返回为 nil 并崩溃

在 UITableview 中添加 UITextField