2012-02-07 5 views
7

UITextView에 대해 UIBarButtonItem이 inputAccessoryView 인 UIToolBar을 추가했습니다. 잘 작동하지만 UIBarButtonItem은 프레임 바깥쪽에 50 픽셀 밖에있을 수 없습니다. 그것은 큰 문제가 아니지만 그것은 나를 귀찮게. 왜 그런지 알아?UITextView 용 inputAccessoryView로 iOS - UIToolBar

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, 320, 44)]; 
toolBar.barStyle = UIBarStyleBlack; 
toolBar.translucent = YES; 

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneWriting:)]; 
[toolBar setItems:[NSArray arrayWithObjects:doneButton, nil]]; 

self.messageTextView.inputAccessoryView = toolBar; 

답변

2

도구 모음 도구 모음에서 다른 근처에 버튼이없는 경우 자신의 경계를 넘어 버튼의 활성 영역을 확장 할 것 같다

내 코드 (ARC)입니다. Apple 엔지니어는 사용자가 전혀 반응하지 않고 누르려고했던 곳을 추측하려고하는 것이 더 낫다고 생각해야합니다.

+0

그것이 사실이라면, 나는 그것이 "바운드 (outside)"바깥에서 반응하는 "조잡한 (sloppy)"프로그래밍처럼 느껴진다. –

7

iOS 6에서는 예상대로 동작하는 것 같습니다. 니스 팁 :

[toolBar setItems:[NSArray arrayWithObjects:flexibleSpace, doneButton, nil]]; 
2

내가 당신을 도움이되기를 바랍니다 : 그런 다음에 툴바를 초기화

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 

: 버튼이 왼쪽 대신 오른쪽에 표시 할 경우, 다음 중 하나를 사용하십시오. ..

UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init]; 
[keyboardDoneButtonView sizeToFit]; 

UIBarButtonItem* PrevButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:105 target:nil action:nil]; //< 
UIBarButtonItem* NextButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:106 target:nil action:nil]; //> 
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(doneClicked:)]; 

UIBarButtonItem* flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
UIBarButtonItem *fake = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] ; 

[keyboardDoneButtonView setItems:[NSArray arrayWithObjects: PrevButton,fake, NextButton,fake,flexSpace,fake,doneButton,nil] animated:YES]; 

사용 가짜 항목 ...

버튼에 정확한 핀치 위치를 얻을 수
+0

매우 흥미로운 해결책,이 하나는 나를 위해 일했다, 고마워. – carlos16196