2014-10-07 1 views
0

키보드에서 끝내기 위해 텍스트 버튼 옆에 완료 버튼이있는 텍스트 뷰가 있습니다. 기본적으로 텍스트보기 옆에 완료 단추가있는 것이 아니라 도청 될 때 텍스트보기의 너비가 줄고 공간에 완료 단추가 표시되기를 바랍니다. 그런 다음 사용자가 화면이나 완료 버튼을 탭하면 버튼이 사라지고 텍스트보기가 일반 크기로 다시 증가합니다.UITextView의 크기를 줄여 UIButton을 표시합니다.

사용자가 타이핑을 시작할 때 버튼을 만들기위한 코드가 이미 구현되어 있지만 텍스트보기를 살짝 누르고 텍스트를 줄이려면 애니메이션을 추가하는 데 도움이되도록 변경하려고합니다. 전망.

감사합니다.

답변

1

텍스트 뷰의 대리자 메서드 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

+0

Swift에 익숙하지 않지만 동급의 textViewFrame.width = textViewFrame을 사용해 보았습니다. width - self.notesDone.frame.size.width' 또는 같은 오류가 발생합니다. – Chris

+0

아, 알겠습니다. 그게 나에게 오류를 준다 : ''width '를 textViewFrame에 할당 할 수 없다' – user3746428

관련 문제