2012-02-18 3 views
6

:더 이상 UIWebView의 UIScrollView 대리자 속성을 저장할 수 없습니다? 나는이 같은있는 UIWebView의있는 UIScrollView 대리자를 액세스 할 수 있었다 iOS5를하기 전에

for (id subview in webView1.subviews){ 
    if ([[subview class] isSubclassOfClass: [UIScrollView class]]) { 
     UIScrollView * s = (UIScrollView*)subview; 
     OldDelegate = s.delegate;//OldDelegate is type id 
        s.delegate = self; 
    } 
} 

을 지금, 나는 그게 옳은 방법이 아니에요 알고 있지만 (지금까지 내가 이해로) 당시에는 있었다 그것을 할 수있는 유일한 방법. 에서 iOS 5가 변경되었습니다, 그래서 그것을 아이폰 OS (5) 방식으로 수행하려합니다 :

UIScrollView * s = webView.scrollView; 
Olddelegate = s.delegate; 
s.delegate = self; 

하지만 그것을 수행하려고 어느 쪽이든, 내 OldDelegate 개체의 값이 0x0입니다. 이 델리게이트 가치를 유지하는 것이 정말로 중요하지만, 제가 시도한 것처럼, 단지 0x0을 얻고 있습니다.

아이디어가 있으십니까? 내가 ARC를 사용하지 않는

...

+0

그냥 질문입니다. 앱을 제출 한 적이 있습니까? 나는 그것이 애플에 의해 금지되었다고 생각했다. 비록 앱이 거부 될지 모르겠지만 비슷한 것을하고 싶습니다. –

+0

그래, 승인을 받았지만 지금은 업데이트 할 때가되었고 문제가 생길 정도로 잘 작동하지 않습니다 ... – Lizza

+0

왜 대리인을 유지해야합니까? 이는 뷰 계층 구조를 생성하는 방식에서 더 큰 문제의 증거입니다. 대표단은 이해 관계가 없기 때문에 항상 약하게 선언해야합니다. – Sam

답변

0

예, 경우 사용 호, 그것의 가능한 당신의 unretained Olddelegate에 그 일을 가비지 컬렉션, 당신은 -fno-과 호를 사용하지 않도록 파일을 표시 할 수 있습니다 것을 objc-arc를 사용하고 예전과 같이 스스로 유지하고 해제하십시오. 또는 변수를 유지하는 데 도움이되도록 여기에 설명 된 것처럼 강력한 참조를 구현할 수 있습니다. https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

+0

답변을 주셔서 감사합니다.하지만 ARC를 사용하지 않고 있습니다 ... – Lizza

+0

Olddelegate 속성입니다 | @property (nonatomic, retain) NSObject * Olddelegate; –

+0

예 속성입니다 – Lizza

1

의 속성은 입니다. _UIWebViewScrollView이라는이 개인 클래스는 delegate 속성을 사용하지 않으며 항상 nil입니다. 어쩌면 당신은 리팩토링을 할 수 있고 실제 scrollview-delegate를 얻을 수 있습니다.하지만 저는 거의 100 % 확신합니다. 애플은 앱을 거부 할 것입니다.