2016-08-09 1 views
0

Я хотел бы добавить текстовое поле и кнопку отправки, которая придерживается нижней части uitableview. Я добавил нижний колонтитул в таблицу, чтобы достичь этого, но кажется, что нижний колонтитул появляется под последним комментарием, а не с самого нижнего уровня uitableview. Я также хотел бы переместить нижний колонтитул, когда клавиатура появляется и опускается, когда ее отклоняют. Ниже вы можете увидеть мой код для справки. Благодаря!Создайте текстовое поле и отправьте кнопку в нижней части uitableview, например, раздел комментариев в Instagram

Expected Result i.e. instagram/chat app textfield at bottom

Expected Result

Actual outcome

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) 
} 

ответ

0

Я предлагаю использовать Tableview в обычае UIViewController этот код может помочь вам:

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 
} 
+0

Если я не ошибаюсь, вы бы добавили tableview внутри viewcontroller. Похоже, что ячейка tableview будет полем комментария, но где бы я добавил текстовое поле и кнопку отправки? Благодарю. – mir

+0

Вам нужно просто добавить uitableview в viewcontroller, а затем добавить ячейку, содержащую комментарий, и под вашим uitableview положить текстовое поле и кнопку отправки, так как вы можете изменить свой вес и ширину uitableview с помощью раскадровки и не забывайте внедрять datasource tableview, надейтесь, что это hep :) если мой ответ помог, не стесняйтесь проверить мой ответ :) спасибо –

Смежные вопросы