Ничто не мешает вам добавлять объекты типа UIWebView
и UIView
к тому же NSArray
.
Если ваш код должен знать, имеете ли вы дело с UIWebView
или UIView
, вы можете использовать метод isKindOfClass:
для проверки:
NSArray *myArray;
// Fill the array with a bunch of UIWebView and UIView objects here
for (id theObject in myArray)
{
if ([theObject isKindOfClass:[UIWebView class]]) {
// do stuff
}
else if ([theObject isKindOfClass:[UIView class]]) {
// do other stuff
}
}
Кроме того, UIWebView
является подклассом UIView
и наследует многие из одних и тех же методов, что делает расположение представления одинаковым в обоих случаях.
С точки зрения пользовательского интерфейса, вероятно, плохая практика иметь представления прокрутки внутри представлений прокрутки, поэтому вы захотите отключить прокрутку объектов UIWebView
. Если вы ориентируетесь на iOS 5 и выше, вы можете использовать следующее:
webView.scrollView.scrollEnabled = NO;
webView.scrollView.bounces = NO;
и если у вас версия iOS ниже 5.0, вы можете добавить следующий javascript:
<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}
</script>
Для реализации внедрения JavaScript, вы можете использовать UIWebView
stringByEvaluatingJavaScriptFromString:
метод внутри webViewDidFinishLoad:
См. Здесь для получения дополнительной информации о UIWebView
инъекции JavaScript: http://iphoneincubator.com/blog/windows-views/how-to-inject-javascript-functions-into-a-uiwebview
Редактировать: Глядя на ваш код, кажется, что вы вставляете UIWebView
и два UIColor
объекта в ваш массив. Поэтому вам нужно проверить, имеете ли вы дело с UIWebView
или UIColor
, или у вас возникнет сбой на subview.backgroundColor = [colors objectAtIndex:i];
. Также вы устанавливаете для UIWebView
фрейма объекта значение CGRect frame;
, которое не инициализировано.
Вы должны заполнить ваш NSArray
вашим UIWebView
, а затем двумя UIView
объектами с установленными цветами фона:
UIWebView *webView = [[UIWebView alloc] init];
UIView *viewOne = [[UIView alloc] init];
[viewOne setBackgroundColor:[UIColor blackColor]];
UIView *viewTwo = [[UIView alloc] init];
[viewTwo setBackgroundColor:[UIColor blackColor]];
NSArray *viewArray = [NSArray arrayWithObjects:webView, viewOne, viewTwo, nil];
for (id theObject in viewArray)
{
if ([theObject isKindOfClass:[UIWebView class]]) {
// do stuff
}
else if ([theObject isKindOfClass:[UIView class]]) {
// do other stuff
}
}