#iphone #button #ios5
#iPhone #кнопка #ios5
Вопрос:
У меня есть приложение для iPhone, которое работает только в альбомной ориентации. В правой части экрана есть кнопка, а в крайнем левом углу — кнопка.
Нижняя часть с левой стороны работает и реагирует на прикосновения. Однако кнопка с правой стороны не реагирует на прикосновения.
Если я отображаю другой вид и возвращаюсь к основному виду, все кнопки работают.
Если я переместу кнопку непосредственно перед отметкой 3/4 на экране, кнопка сработает. Если я запускаю приложение с помощью симулятора iOS 4.3.2, кнопки также работают.
Я озадачен тем, почему кнопки, расположенные чуть дальше отметки 3/4 на альбомном экране, не отвечают.
Изначально приложение было написано с использованием xCode 4.1 и iOS 4.3.2. Я открыл проект в новом xCode и iOS SDK, и началось такое поведение.
Комментарии:
1. Как и, к вашему сведению, это происходит для любой кнопки, которую я добавляю в правую часть экрана, а не только для той единственной кнопки, которая была там изначально.
2. Вам действительно придется добавить немного кода…
3. Прошу прощения, если кто-нибудь потратил время на этот вопрос. С тех пор я нашел решение. Хотя это скорее обходной путь, чем решение. Я не думал, что требуется код, поскольку его можно воспроизвести, просто перетащив кнопки на наконечнике влево и вправо.
4. Это приложение с несколькими видами. В MainWindow добавлен класс view, который управляет другими представлениями. Проблема, похоже, в том, что окно MainWindow является портретным, когда все остальные виды в приложении являются альбомными. Таким образом, кнопки справа от точки 320 недоступны. Ни за что на свете я не мог понять, как сделать MainWindow также ландшафтным. Я решил проблему с помощью этого кода:
5. viewMgrClass.view.frame = CGRectMake(0.0, 0.0, 480.0, 320.0); [ window addSubview:viewMgrClass.view]; Первоначально кода .view.frame там не было.
Ответ №1:
Укажите размер кадра для представления в коде AppDelegate перед добавлением его в главное окно.
Добавьте код перед добавлением представления.
viewMgrClass.view.frame = CGRectMake(0.0, 0.0, 480.0, 320.0);
Он идет перед этой строкой:
[window addSubview:viewMgrClass.view];
Я не мог понять, как сделать MainWindow портретным.