Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift消息文本区_Swift_Swift2 - Fatal编程技术网

Swift消息文本区

Swift消息文本区,swift,swift2,Swift,Swift2,我正在创建一个新应用程序,我想添加如下消息区域: 当用户单击文本区域时,将显示键盘,用户开始编写消息,右键将是发送按钮,文本区域将增长如下: 最简单的方法是什么 我有个主意,但我认为这不是最好的办法。我正在考虑用程序解决它。在viewLoad中,我将以编程方式创建按钮和文本区域,然后当用户开始写入时,我将再次创建它们 我还建议用代码解决这个问题。加载视图时,必须创建所有按钮,如果用户开始写入,则应重新创建部分按钮。但请记住,您必须确保Textfield是同一个实例,或者您必须通过代码将响应者

我正在创建一个新应用程序,我想添加如下消息区域:

当用户单击文本区域时,将显示键盘,用户开始编写消息,右键将是发送按钮,文本区域将增长如下:

最简单的方法是什么


我有个主意,但我认为这不是最好的办法。我正在考虑用程序解决它。在viewLoad中,我将以编程方式创建按钮和文本区域,然后当用户开始写入时,我将再次创建它们

我还建议用代码解决这个问题。加载视图时,必须创建所有按钮,如果用户开始写入,则应重新创建部分按钮。但请记住,您必须确保Textfield是同一个实例,或者您必须通过代码将响应者提交给它。

如中所述,您可以使用
UITextField
委托方法来截获不同的状态

例如,您可以使用来处理用户开始编辑的时刻。在这里,您可以处理约束以放大文本字段(请注意,如果使用“自动布局”,则必须使用约束,不要进行帧修改):

之后,您可以处理其他代理:

func textFieldShouldEndEditing(textField: UITextField!) -> Bool {  
    return false
}

func textFieldShouldReturn(textField: UITextField!) -> Bool { 
  textField.resignFirstResponder()

    return true
}

在这里,您可以重复动画或执行任何您想要的操作。

除了文本字段代理,您还需要处理键盘:

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}

除了textfield委托,您还需要处理键盘。
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}