맨 아래에 도킹했을 린퍼타클레소리비에프

39 로 할 수 있는 비슷한 포지셔닝도 i&, m, s # 39 의 텍스트 입력 표시줄에는 비헤이비어를 Apple& 메시지를 app.

나도 날잡아 많은 외곽진입 high and low, 검색 및 여러 가지 비슷한 질문을 한 적이 없는 것이 좋습니다.

지정할 수 있습니다.

  1. 하단의 '보기' 이투르바 있습니다
  2. 키보드 (keyboard 를 따르는 것이 나타나고 숨길지 도구바에
  3. 키보드 위에 도구바에 키보드를 사용할 때 볼 수 있어야 한다
  4. 키보드를 사용할 때 숨겨짐, 도구바에 숙박권 (docked&quot ";) 하단의 보기
  • 제안된 solutions:*

이에 대해 수동으로 애니메이션할 도구바에 알림에는 키보드 모양

이 솔루션은 특별한 경우의 두 번째 요건을 충족하지 못하고 ( 도구바에 키보드 같은 것이 준수하십시오 키보드 나타나고 숨길지 ):

  • IOS 7 의 ',' 위스크롤비유키보르디스미스모데 도입되었다. 이를 통해 상호대화식 제스처 를 무시하고 방식이다. 사용자가 키보드, 키보드 위쪽 가장자리에 지나 팬합니다 따라 점차 모함하는거 다음과 같다. 이 솔루션은 수용할 수 있는 길이 없음 이 비헤이비어와 그냥 찻입 도구바에 # 39 의 고립된 dell. it& 애니메이션된 포지셔닝하십시오.

또한 이 제품은 충족할 경우 특별한 경우에는 제 3 의 요구사항 ( 도구바에 키보드 위에 키보드를 사용할 때 볼 수 있어야 한다 ():

  • 순환부터. 이 솔루션은 성가시게 페이징됩니다 자세한, 불필요한 코드 (as) 을 보게 될 것으로 향후 제안된 솔루션) 에 대해 도구막대 회전하려면 디바이스입니다 순환부터.

이 솔루션을 통해 다른 문제.

  • 키보드 높이. 이 솔루션을 사용하면 도구막대 일부가 될 수 있다고 아니다) 의 키보드 때문에 추가 코드를 작성해야 이벤트수정적절한 린지팅 지원할 수 있는 내용.
  • 다음 solution:* 제안했다.

',' & # 39 이레스포네르 린퍼타클레소리비에프 's' 사용

이 솔루션은 운행에서어떠한 애플 지원하기 위한 것으로 이 같은 문제를 해결할 수 있기 때문에 모든 애니메이션을 도구막대 수동으로로 비헤이비어를 단점이 있었다. 하지만 이 솔루션은 맥을 끊고 완전히 4 요구 사항 ( 키보드를 사용할 때 숨겨짐, 도구바에 숙박권 (docked&quot ";) 보기 하단의 ).

& # 39 는 솔루션을 사용할 수 있는 것 같다 ',' s '하지만' 이레스포네르 린퍼타클레소리비에프 움직이지 않을 수 있도록 '아래' 린퍼타클레소리비에프 경치말이야 짐작이지만요. # 39 m, 코드 청소하십시오 i& 찾고 이를 위해. 하지만 앞서 언급했듯이, 아찔했어 노블, 다른 곳에서 시도_횟수 정교한 가지 요건을 충족하지 못하고.

'& # 39, 나는 내 특정 사건' 의 의미에 대해 추가 쟁점을 루이 아비그라티온콘트로예르 보았으매 사용할 수 있는 것이 아닙니다 "에 대한 이 같은 도구막대 비헤이비어를 루이 아비그라티온콘트로예르 '. 그러나 어떤 목적을 달성하기 위해 기꺼이 I& # 39 m, 일부 수정 소개하십시오 해키 iqn.

해결책

난 그냥 표시됩니까 &quot the"; 솔루션을 출시해 제이슨 포먼 (@threeve). 파악할 수 있는 추가 컨트롤러 (예, 보기입니다 컨트롤러거) '와' 린퍼타클레소리비에프 반품해야 보기입니다 운영까지도 도킹하려면 이동하고 맨 아래에 있는 방식이다. 그냥 작동합니다. # 39 doesn& 보기 위해서는 될 것이라고 보는 계층에 의해, t 정작 필요한 보기입니다 컨트롤러거 삽입됨 자동으로.

편집: 또 다시 구현하십시오 캔베컴퍼스트레스포네르 지원 (최대 제이만 통해 밝힌 것처럼). 너무 레로댕푸트비우스 참조할 수 있습니다.

해설 (14)

39 의 조너선 Badeen& 제작되었던 솔루션 협력했습니다 for me. # 39 에서 아리크 의 코드를 here& 이를 구현하는 방법에 있다 (이 가야 한다고 볼 수 있는 적절한 컨트롤러):

    - (BOOL)canBecomeFirstResponder{

        return YES;

    }

    - (UIView *)inputAccessoryView{

        return self.inputAccessoryToolbar;  
     // where inputAccessoryToolbar is your keyboard accessory view

    }
해설 (1)

찾는 사람들을 위한 새로운 버전:

연결하는 도구막대 (& # 39, & # 39 '' 내 경우에는 미투르바;) 켜짐이 데이터베이스에구성원을 보기입니다 컨트롤러입니다. '다음' 킬러 '린퍼타클레소리비에프 오버라이드합니다 캔베컴퍼스트레스포네르 방법 및 오버라이드합니다' 변수. 또 다른 셀f.미투르바실레모프레프롬스페르비예프 () '또는' t forget 추가합니다 don& # 39, xcode 불만이 커질 것으로 보인다.

class ViewController: UIViewController {

    @IBOutlet var myToolBar: UIToolbar!

    override func canBecomeFirstResponder() -> Bool {
        return true
    }

    override var inputAccessoryView:UIView{
        get{
            return self.myToolBar
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.myToolBar.removeFromSuperview()
    }
}
해설 (4)

39 의 오픈 소스, 이 솔루션을 통해 손쉽게 훌륭한 there& 사람들에게는 좋은 dell. 극심한 설비투자: [슬라크티스트비스콘트로예르] (https://github.com/slackhq/SlackTextViewController) .

39 의 here& 어떻게 구현할 수 있는 보기입니다 도킹했을 도구막대 4 단계:

  1. Pod 를 설치할 예정이다. (http://cocoapods.org/? q = 슬라크티스트비스콘트로예르)
  2. 39 의 스위프트, 만들 경우, re 먹어서나 you& app 너회의 스위프트 코드 및 그 사이에 다리를 헤더입니다 obj c 클래스뿐만. [# 39 의 빠른 절차 Here& 좋은 있는] (https://medium.com/@stigi/swift-cocoapods-da09d8ba6dd2). (이 브리징을 헤더입니다 won& # 39, t 필요하다 싶은 사람이 있는 만큼 일단 클래스뿐만 변환되어 협력합니다?)

  3. '을 만들기', '에서' 메사제비스콘트로예르 상속됩니다 스크티스트비스콘트로예르 작성하지 않아도 이 보다 더 이상 코드:

가져오기의 재단 이킷 임포트합니다

클래스 메사제비스콘트로예르: 스크티스트비스콘트로예르 {

필요한 init (기반 부호화 이데코더: 산고데르!) { 스페리니스 (기반 부호화. 이데코더) } }

  1. 스토리보드 만드시겠습니까 보기입니다 상속됩니다 컨트롤러가 포함되어 있는 충스러웠으니 메사제비스콘트로예르.
  2. 39, ll see, 또는 장치에서 앱 테스트 에뮬레이터이고 you& 도킹했을 테스트바르 수 있는 아름다운 (보너스로) 확장됨 사용자로 쓰기뿐만 추가 텍스트 선.

이 팀장은 소품 등 극심한 설비투자 추출 유용한 포드.

해설 (1)

그래서 아는 이는 확실하지 않지만, 이 경우 기존 로그하고 실로나는 해결됨으로 방관하겠나 afaq afnor apc® 길을 찾았다. I believe there is a 동작할 수 있지만, 내가 만든 버그로 린퍼타클레소리비에프 해키 솔루션이므로 메시지를 운행에서어떠한 app 가. 이 문제를 해결하려면 구현하기 위해 필요한 모든 코드를 제공하는 것 같아요. 시도하시려면 갈 수 있으며, 보다 적합한 블로그 포스트를 작성한 뒤 가까운 미래에 보다 심도 있는 설명과 함께 내 발견사항. 모든 질문에, 알려주세요.

@property(nonatomic,assign)BOOL isFirstKeyboard; //workaround for keyboard bug

@property(nonatomic,assign)BOOL isViewAppear;

@property(nonatomic,strong)ChatBarView *chatView; //custom chat bar view

@property(nonatomic,strong)UIView *footerPadView; //just to add some nice padding
////////////////////////////////////////////////////////////////////////////////////////////////////
//in the view did load
- (void)viewDidLoad
{
    //more app specific code...
    self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
    self.chatView.textView.inputAccessoryView = self.chatView;
}

////////////////////////////////////////////////////////////////////////////////////////////////////
-(void)done
{
    self.isFirstKeyboard = YES;
    [self.chatView.textView becomeFirstResponder];
}
////////////////////////////////////////////////////////////////////////////////////////////////////
- (void) moveTextViewForKeyboard:(NSNotification*)aNotification up:(BOOL)up
{
    if(!self.isViewAppear)
        return;
    //NSLog(@"keyboard is: %@", up ? @"UP" : @"Down");
    if(!up && !self.isFirstKeyboard)
        [self performSelector:@selector(done) withObject:nil afterDelay:0.01];
    else if(!up & self.isFirstKeyboard)
    {
        self.isFirstKeyboard = NO;
        [self.view addSubview:self.chatView];
        CGRect frame = self.chatView.frame;
        frame.origin.y = self.view.frame.size.height - self.chatView.frame.size.height;
        self.chatView.frame = frame;
    }
    else
    {
        NSDictionary* userInfo = [aNotification userInfo];
        NSTimeInterval animationDuration;
        UIViewAnimationCurve animationCurve;
        CGRect keyboardEndFrame;

        [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
        [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
        [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];

        // Animate up or down
        [UIView beginAnimations:nil context:nil];
        if(up)
            [UIView setAnimationDuration:0.2];
        else
            [UIView setAnimationDuration:0.3];
        [UIView setAnimationCurve:animationCurve];

        CGRect frame = self.footerPadView.frame;
        CGRect keyboardFrame = [self.view convertRect:keyboardEndFrame toView:nil];
        if (up)
            frame.size.height = keyboardFrame.size.height - self.chatView.frame.size.height;
        else
            frame.size.height = 0;
        self.footerPadView.frame = frame;
        self.tableView.tableFooterView = self.footerPadView;
        [UIView commitAnimations];
    }
}
////////////////////////////////////////////////////////////////////////////////////////////////////
- (void)keyboardWillShow:(NSNotification *)aNotification {
    [self moveTextViewForKeyboard:aNotification up:YES];
}
////////////////////////////////////////////////////////////////////////////////////////////////////
- (void)keyboardWillHide:(NSNotification *)aNotification
{
    [self moveTextViewForKeyboard:aNotification up:NO];
}
////////////////////////////////////////////////////////////////////////////////////////////////////
해설 (0)