2014-10-07 45 views
0

我在我的应用程序中有一个文本视图,它旁边有一个完成按钮,可以退出键盘。基本上,我不希望文字视图在文本视图旁边永久显示完成按钮,而是在点击时文本视图的宽度减小,然后完成按钮将出现在空间中。然后,当用户点击屏幕或完成按钮时,按钮消失,文本视图再次增加到正常大小。减小UITextView的大小以显示UIButton

我已经实现了让用户在开始输入时出现按钮的代码,但是我想改变它,以便在他们点击文本视图时出现,并且我还需要帮助添加动画以缩小文本视图。

谢谢。

回答

1

实现你的textview的委托方法textViewShouldBeginEditing:。然后,在该方法中,做这样的事情:

button.alpha = 0.0f; 
button.hidden = NO; 
[UIView animationWithDuration:0.3f animations:^{ 
    NSInteger padding = 5; 
    CGRect textViewFrame = textView.frame; 
    textViewFrame.width -= CGRectGetWidth(button.frame) - padding; 

    // Edit 
    textView.frame = textViewFrame; 

    // and just to fade the button in as the text field shrinks 
    button.alpha = 1.0; 
}]; 

当你按一下按钮,文本字段返回到正确的宽度

+0

感谢您的答复,我会做相反。我在Swift中这样做,我想知道什么相当于'textViewFrame.width - = CGRectGetWidth(self.notesDone.frame)'在Swift中?此刻我得到一个错误 - 不能调用' - ='与类型的参数列表'(CGFloat,CGFloat)' – user3746428 2014-10-07 20:44:34

+0

我不熟悉Swift,但你有没有尝试过相当的'textViewFrame.width = textViewFrame。宽度 - self.notesDone.frame.size.width'或这只是导致相同的错误? – Chris 2014-10-07 20:47:49

+0

啊,我明白了。这给了我错误:'不能指定'宽度'textViewFrame' – user3746428 2014-10-07 20:50:20