저는 Xamarin Studio (MonoTouch)에서 개발하고 있지만 개념은 같습니다.iOS에서 Subview가 터치를 캡처하지 못하게하는 이유는 무엇입니까?
나는 UIViewController를 가지고 있으며 UIViewController 내에 탭 이벤트에 각각 응답해야하는 몇 가지 하위 뷰를 추가했습니다. 내 하위 뷰에 UITapGestureRecognizer를 첨부하지만 실행되지 않습니다. "AddExploreButton()"및 "AddFollowingButton()"을보십시오.
제스처를 포함하는 뷰 (MyMenu.View)에 추가하면 탭 제스처를 캡처하지만 이벤트를 처리하기 위해 하위 뷰가 필요합니다.
내 하위보기가 제스처를받지 못하게하는 이유는 무엇입니까? (참고로 UserInteractionEnabled = true를 설정했습니다.
두 번째로 이것이 잘못된 코딩 패턴 인 경우 터치 이벤트에 하위 뷰를 연결하려면 어떻게해야합니까?
public class MyMenu : UIViewController
{
private UIImageView _settingsButton;
private TrendingMenuButton _trendingButton;
private FollowingMenuButton _followingButton;
private ExploreMenuButton _exploreButton;
private NotificationsMenuButton _notificationsButton;
public MyMenu() { }
public override void ViewDidLoad() {
base.ViewDidLoad();
View.Hidden = true;
View.UserInteractionEnabled = true;
View.BackgroundColor = UIColor.FromPatternImage(UIImage.FromBundle("images/menu_bg.png"));
View.Frame = new RectangleF(0, CityTitleBar.NAV_HEIGHT, 320, 349);
AddSettingsButton();
AddTrendingButton();
AddFollowingButton();
AddExploreButton();
AddNotificationsButton();
}
private void AddSettingsButton() {
_settingsButton = new UIImageView(UIImage.FromBundle("images/icon_cogwheel.png"));
_settingsButton.Frame = new RectangleF(new PointF(269, 12), _settingsButton.Frame.Size);
View.AddSubview(_settingsButton);
}
private void AddTrendingButton() {
_trendingButton = new TrendingMenuButton(42, 33);
View.AddSubview(_trendingButton);
}
private void AddFollowingButton() {
_followingButton = new FollowingMenuButton(182, 33);
_followingButton.AddGestureRecognizer(new UITapGestureRecognizer((g) => {
MenuHelper.HideMenu();
NavigationHelper.LoadScreen(new FavoritesScreen());
}));
View.AddSubview(_followingButton);
}
private void AddExploreButton() {
_exploreButton = new ExploreMenuButton(42, 187);
_exploreButton.AddGestureRecognizer(new UITapGestureRecognizer((g) => {
MenuHelper.HideMenu();
NavigationHelper.LoadScreen(new ExploreScreen());
}));
View.AddSubview(_exploreButton);
}
private void AddNotificationsButton() {
_notificationsButton = new NotificationsMenuButton(182, 187);
View.AddSubview(_notificationsButton);
}
}
* View.UserInteractionEnabled = true; * 두 번째 하위보기에서 터치 이벤트를 잡는 데 도움이되었습니다. 감사!) –