2013-07-04 2 views
0

사용자 정의 UITextfield을 만들고 UIToolbar에서 사용하십시오.사용자 정의 UIView의 원점 X를 얻으려면 어떻게해야합니까?

그럼 난 창에 사용자 정의 UITextField의 원점 X를 얻으려고 사용자 정의 UITextFieldinitWithFrame

[super initWithFrame:frame] 후입니다. 그러나 나는 시도했다

self.frame.origin.x 
self.bounds.origin.x 
self.superview.frame.origin.x, 
self.superview.bounds.origin.x, 
CGPoint point = [self.superview convertPoint:self.frame.origin toView:nil]; return point.x; 
CGPoint point = [self.superview convertPoint:self.frame.origin fromView:self]; return point.x; 
CGPoint point = [self convertPoint:CGPointZero toView:[UIApplication sharedApplication].keyWindow]; return point.x 

그리고 그들 모두는 0.0을 돌려 준다.

그러나 실제로 UITextFieldUIToolbar의 중간 어딘가에 있습니다. 어떻게 커스텀 오리 지날 x를 얻는가 UITextField?

내 코드 :

self = [super initWithFrame:frame]; 
if (self) { 
    originalHeight = self.bounds.size.height; 
    originalWidth = self.bounds.size.width; 

    [self createTableView]; 

} 
return self; 

- (void)createTableView 
{ 
    self.tableView = [[UITableView alloc] init]; 

    LogDebug(@"Origin x = %f", self.frame.origin.x); 
    self.tableView.frame = CGRectMake(self.frame.origin.x, originalHeight + 18, originalWidth, 320); 

} 

편집 : 나는 이것에 대한 해결책을 알아 냈하지만 여전히이 질문 뒤에 이유를 모르지만 누군가가이 주제를 확장 할 수 있다면 나는 감사합니다

.

위의 코드에서 초기화하는 동안 내 사용자 지정 UIView의 원본 X를 인쇄하려고합니다. 앱이 내 사용자 정의 UIView의 원래 점 정보를 알지 못하는 것 같습니다.

나는이 라인

self = [super initWithFrame:frame] 

나는 정의의 UIView의 원 포인트 정보를 얻을 수 있지만, 내가 잘못했다 후 생각했다. Don’t Message self in Objective-C init (or dealloc)

동안 자체에 메시지를 사용하지 않도록 권고 :

는 또한

self.frame.origin.x 

내가이 블로그를 읽었습니다

[[UIApplication sharedApplication].keyWindow convertPoint:self.bounds.origin fromView:self].x; 
+0

전체 initWithFrame : 메서드를 게시 할 수 있습니까? – runmad

답변

0

의 같은 효과가 있다는 것을 발견 초기화. 블로그의 요점에 동의하고 자기가 일관성이없는 상태에있을 때 init에서 메시지를 보려고했기 때문에 문제가 있다고 생각합니다. CGRectMake 메서드를 self.tableView으로 초기화하고 코드의 작동은 자기의 프레임과 경계가 설정되어 사용할 준비가되어 있기 때문에 옮깁니다.

관련 문제